@atomicfinance/bitcoin-dlc-provider 3.6.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/.nvmrc +1 -1
  2. package/.yalc/@node-dlc/messaging/.nyc_output/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  3. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  4. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/index.json +1 -0
  5. package/.yalc/@node-dlc/messaging/README.md +24 -0
  6. package/.yalc/@node-dlc/messaging/__tests__/_test-utils.ts +12 -0
  7. package/.yalc/@node-dlc/messaging/__tests__/chain/ChainManager.spec.ts +178 -0
  8. package/.yalc/@node-dlc/messaging/__tests__/compatibility/dlcspecs-compatibility.spec.ts +473 -0
  9. package/.yalc/@node-dlc/messaging/__tests__/compatibility/rust-dlc-cross-language.spec.ts +342 -0
  10. package/.yalc/@node-dlc/messaging/__tests__/compatibility/true-serialization-compatibility.spec.ts +611 -0
  11. package/.yalc/@node-dlc/messaging/__tests__/dlc_message_test.json +155 -0
  12. package/.yalc/@node-dlc/messaging/__tests__/irc/IrcMessage.spec.ts +94 -0
  13. package/.yalc/@node-dlc/messaging/__tests__/messages/AddressCache.spec.ts +79 -0
  14. package/.yalc/@node-dlc/messaging/__tests__/messages/BatchFundingGroup.spec.ts +72 -0
  15. package/.yalc/@node-dlc/messaging/__tests__/messages/CetAdaptorSignatures.spec.ts +57 -0
  16. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractDescriptor.spec.ts +264 -0
  17. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractInfo.spec.ts +419 -0
  18. package/.yalc/@node-dlc/messaging/__tests__/messages/DigitDecompositionEventDescriptor.spec.ts +59 -0
  19. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcAccept.spec.ts +242 -0
  20. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcCancel.spec.ts +42 -0
  21. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcClose.spec.ts +315 -0
  22. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcOffer.spec.ts +527 -0
  23. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcSign.spec.ts +118 -0
  24. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcTransactions.spec.ts +157 -0
  25. package/.yalc/@node-dlc/messaging/__tests__/messages/EnumEventDescriptor.spec.ts +50 -0
  26. package/.yalc/@node-dlc/messaging/__tests__/messages/EventDescriptor.spec.ts +93 -0
  27. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingInput.spec.ts +84 -0
  28. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingSignatures.spec.ts +83 -0
  29. package/.yalc/@node-dlc/messaging/__tests__/messages/NegotiationFields.spec.ts +328 -0
  30. package/.yalc/@node-dlc/messaging/__tests__/messages/NodeAnnouncementMessage.spec.ts +115 -0
  31. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAnnouncement.spec.ts +415 -0
  32. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAttestation.spec.ts +326 -0
  33. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEvent.spec.ts +143 -0
  34. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEventContainer.spec.ts +95 -0
  35. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleIdentifier.spec.ts +48 -0
  36. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleInfo.spec.ts +116 -0
  37. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderAccept.spec.ts +77 -0
  38. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderNegotiationFields.spec.ts +216 -0
  39. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderOffer.spec.ts +121 -0
  40. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderPositionInfo.spec.ts +75 -0
  41. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutCurvePiece.spec.ts +220 -0
  42. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutFunction.spec.ts +101 -0
  43. package/.yalc/@node-dlc/messaging/__tests__/messages/RoundingIntervals.spec.ts +75 -0
  44. package/.yalc/@node-dlc/messaging/__tests__/serialize/F64.spec.ts +260 -0
  45. package/.yalc/@node-dlc/messaging/__tests__/tsconfig.json +8 -0
  46. package/.yalc/@node-dlc/messaging/coverage/lcov-report/base.css +224 -0
  47. package/.yalc/@node-dlc/messaging/coverage/lcov-report/block-navigation.js +79 -0
  48. package/.yalc/@node-dlc/messaging/coverage/lcov-report/favicon.png +0 -0
  49. package/.yalc/@node-dlc/messaging/coverage/lcov-report/index.html +201 -0
  50. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/MessageType.ts.html +494 -0
  51. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainManager.ts.html +1058 -0
  52. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainMemoryStore.ts.html +182 -0
  53. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/index.html +126 -0
  54. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/Address.ts.html +272 -0
  55. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/index.html +111 -0
  56. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.html +141 -0
  57. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.ts.html +212 -0
  58. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/IrcMessage.ts.html +563 -0
  59. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/index.html +111 -0
  60. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/AddressCache.ts.html +302 -0
  61. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/BatchFundingGroup.ts.html +503 -0
  62. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignatures.ts.html +347 -0
  63. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignaturesV0.ts.html +347 -0
  64. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractDescriptor.ts.html +1040 -0
  65. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractInfo.ts.html +1382 -0
  66. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcAccept.ts.html +1865 -0
  67. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCancel.ts.html +251 -0
  68. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcClose.ts.html +986 -0
  69. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCloseMetadata.ts.html +443 -0
  70. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcIds.ts.html +281 -0
  71. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInfo.ts.html +323 -0
  72. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcMessage.ts.html +341 -0
  73. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcOffer.ts.html +1895 -0
  74. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcSign.ts.html +1142 -0
  75. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcTransactions.ts.html +719 -0
  76. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/EventDescriptor.ts.html +947 -0
  77. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingInput.ts.html +728 -0
  78. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignatures.ts.html +374 -0
  79. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignaturesV0.ts.html +374 -0
  80. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NegotiationFields.ts.html +836 -0
  81. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NodeAnnouncementMessage.ts.html +515 -0
  82. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncement.ts.html +608 -0
  83. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncementV0.ts.html +605 -0
  84. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestation.ts.html +956 -0
  85. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestationV0.ts.html +770 -0
  86. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEvent.ts.html +830 -0
  87. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainer.ts.html +347 -0
  88. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainerV0.ts.html +347 -0
  89. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventV0.ts.html +827 -0
  90. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifier.ts.html +314 -0
  91. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifierV0.ts.html +314 -0
  92. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfo.ts.html +1637 -0
  93. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfoV0.ts.html +1631 -0
  94. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderAccept.ts.html +557 -0
  95. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderIrcInfo.ts.html +380 -0
  96. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderMetadata.ts.html +437 -0
  97. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderNegotiationFields.ts.html +551 -0
  98. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderOffer.ts.html +1337 -0
  99. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderPositionInfo.ts.html +590 -0
  100. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutCurvePiece.ts.html +1427 -0
  101. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutFunction.ts.html +800 -0
  102. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervals.ts.html +461 -0
  103. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervalsV0.ts.html +482 -0
  104. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ScriptWitnessV0.ts.html +269 -0
  105. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/index.html +636 -0
  106. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/SerdeUtils.ts.html +1394 -0
  107. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/index.html +111 -0
  108. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/F64.ts.html +1136 -0
  109. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/deserializeTlv.ts.html +125 -0
  110. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/getTlv.ts.html +143 -0
  111. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/index.html +141 -0
  112. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/util.ts.html +179 -0
  113. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/index.html +111 -0
  114. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/validate.ts.html +182 -0
  115. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.css +1 -0
  116. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.js +2 -0
  117. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  118. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sorter.js +170 -0
  119. package/.yalc/@node-dlc/messaging/coverage/lcov.info +5394 -0
  120. package/.yalc/@node-dlc/messaging/dist/MessageType.d.ts +100 -0
  121. package/.yalc/@node-dlc/messaging/dist/MessageType.js +117 -0
  122. package/.yalc/@node-dlc/messaging/dist/MessageType.js.map +1 -0
  123. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.d.ts +50 -0
  124. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js +211 -0
  125. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js.map +1 -0
  126. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.d.ts +14 -0
  127. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js +28 -0
  128. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js.map +1 -0
  129. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.d.ts +11 -0
  130. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js +3 -0
  131. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js.map +1 -0
  132. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.d.ts +48 -0
  133. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js +3 -0
  134. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js.map +1 -0
  135. package/.yalc/@node-dlc/messaging/dist/domain/Address.d.ts +24 -0
  136. package/.yalc/@node-dlc/messaging/dist/domain/Address.js +46 -0
  137. package/.yalc/@node-dlc/messaging/dist/domain/Address.js.map +1 -0
  138. package/.yalc/@node-dlc/messaging/dist/index.d.ts +44 -0
  139. package/.yalc/@node-dlc/messaging/dist/index.js +63 -0
  140. package/.yalc/@node-dlc/messaging/dist/index.js.map +1 -0
  141. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.d.ts +43 -0
  142. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js +116 -0
  143. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js.map +1 -0
  144. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.d.ts +15 -0
  145. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js +51 -0
  146. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js.map +1 -0
  147. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.d.ts +61 -0
  148. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js +113 -0
  149. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js.map +1 -0
  150. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.d.ts +40 -0
  151. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js +67 -0
  152. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js.map +1 -0
  153. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.d.ts +122 -0
  154. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js +222 -0
  155. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js.map +1 -0
  156. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.d.ts +135 -0
  157. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js +304 -0
  158. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js.map +1 -0
  159. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.d.ts +145 -0
  160. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js +428 -0
  161. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js.map +1 -0
  162. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.d.ts +31 -0
  163. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js +51 -0
  164. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js.map +1 -0
  165. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.d.ts +68 -0
  166. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js +210 -0
  167. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js.map +1 -0
  168. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.d.ts +44 -0
  169. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js +74 -0
  170. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js.map +1 -0
  171. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.d.ts +26 -0
  172. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js +58 -0
  173. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js.map +1 -0
  174. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.d.ts +31 -0
  175. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js +61 -0
  176. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js.map +1 -0
  177. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.d.ts +23 -0
  178. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js +54 -0
  179. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js.map +1 -0
  180. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.d.ts +131 -0
  181. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js +418 -0
  182. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js.map +1 -0
  183. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.d.ts +96 -0
  184. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js +267 -0
  185. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js.map +1 -0
  186. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.d.ts +69 -0
  187. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js +149 -0
  188. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js.map +1 -0
  189. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.d.ts +106 -0
  190. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js +209 -0
  191. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js.map +1 -0
  192. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.d.ts +62 -0
  193. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js +163 -0
  194. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js.map +1 -0
  195. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.d.ts +36 -0
  196. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js +78 -0
  197. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js.map +1 -0
  198. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.d.ts +6 -0
  199. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js +3 -0
  200. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js.map +1 -0
  201. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.d.ts +86 -0
  202. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js +185 -0
  203. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js.map +1 -0
  204. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.d.ts +57 -0
  205. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js +127 -0
  206. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js.map +1 -0
  207. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.d.ts +76 -0
  208. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js +131 -0
  209. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js.map +1 -0
  210. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.d.ts +68 -0
  211. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js +239 -0
  212. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js.map +1 -0
  213. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.d.ts +90 -0
  214. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js +189 -0
  215. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js.map +1 -0
  216. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.d.ts +32 -0
  217. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js +67 -0
  218. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js.map +1 -0
  219. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.d.ts +32 -0
  220. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js +58 -0
  221. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js.map +1 -0
  222. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.d.ts +32 -0
  223. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js +58 -0
  224. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js.map +1 -0
  225. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.d.ts +161 -0
  226. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js +390 -0
  227. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js.map +1 -0
  228. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.d.ts +161 -0
  229. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js +387 -0
  230. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js.map +1 -0
  231. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.d.ts +65 -0
  232. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js +125 -0
  233. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js.map +1 -0
  234. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.d.ts +42 -0
  235. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js +74 -0
  236. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js.map +1 -0
  237. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.d.ts +56 -0
  238. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js +87 -0
  239. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js.map +1 -0
  240. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.d.ts +69 -0
  241. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js +114 -0
  242. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js.map +1 -0
  243. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.d.ts +97 -0
  244. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js +296 -0
  245. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js.map +1 -0
  246. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.d.ts +50 -0
  247. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js +125 -0
  248. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js.map +1 -0
  249. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.d.ts +129 -0
  250. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js +327 -0
  251. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js.map +1 -0
  252. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.d.ts +66 -0
  253. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js +170 -0
  254. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js.map +1 -0
  255. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.d.ts +52 -0
  256. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js +95 -0
  257. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js.map +1 -0
  258. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.d.ts +29 -0
  259. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js +50 -0
  260. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js.map +1 -0
  261. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.d.ts +15 -0
  262. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js +32 -0
  263. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js.map +1 -0
  264. package/.yalc/@node-dlc/messaging/dist/serialize/F64.d.ts +154 -0
  265. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js +307 -0
  266. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js.map +1 -0
  267. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.d.ts +9 -0
  268. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js +11 -0
  269. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js.map +1 -0
  270. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.d.ts +4 -0
  271. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js +23 -0
  272. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js.map +1 -0
  273. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.d.ts +8 -0
  274. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js +33 -0
  275. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js.map +1 -0
  276. package/.yalc/@node-dlc/messaging/dist/util.d.ts +13 -0
  277. package/.yalc/@node-dlc/messaging/dist/util.js +40 -0
  278. package/.yalc/@node-dlc/messaging/dist/util.js.map +1 -0
  279. package/.yalc/@node-dlc/messaging/dist/validation/validate.d.ts +4 -0
  280. package/.yalc/@node-dlc/messaging/dist/validation/validate.js +31 -0
  281. package/.yalc/@node-dlc/messaging/dist/validation/validate.js.map +1 -0
  282. package/.yalc/@node-dlc/messaging/lib/MessageType.ts +138 -0
  283. package/.yalc/@node-dlc/messaging/lib/chain/ChainManager.ts +326 -0
  284. package/.yalc/@node-dlc/messaging/lib/chain/ChainMemoryStore.ts +34 -0
  285. package/.yalc/@node-dlc/messaging/lib/chain/DlcStore.ts +11 -0
  286. package/.yalc/@node-dlc/messaging/lib/chain/IChainFilterChainClient.ts +57 -0
  287. package/.yalc/@node-dlc/messaging/lib/domain/Address.ts +64 -0
  288. package/.yalc/@node-dlc/messaging/lib/index.ts +44 -0
  289. package/.yalc/@node-dlc/messaging/lib/irc/IrcMessage.ts +161 -0
  290. package/.yalc/@node-dlc/messaging/lib/messages/AddressCache.ts +74 -0
  291. package/.yalc/@node-dlc/messaging/lib/messages/BatchFundingGroup.ts +141 -0
  292. package/.yalc/@node-dlc/messaging/lib/messages/CetAdaptorSignatures.ts +89 -0
  293. package/.yalc/@node-dlc/messaging/lib/messages/ContractDescriptor.ts +318 -0
  294. package/.yalc/@node-dlc/messaging/lib/messages/ContractInfo.ts +434 -0
  295. package/.yalc/@node-dlc/messaging/lib/messages/DlcAccept.ts +595 -0
  296. package/.yalc/@node-dlc/messaging/lib/messages/DlcCancel.ts +57 -0
  297. package/.yalc/@node-dlc/messaging/lib/messages/DlcClose.ts +302 -0
  298. package/.yalc/@node-dlc/messaging/lib/messages/DlcCloseMetadata.ts +121 -0
  299. package/.yalc/@node-dlc/messaging/lib/messages/DlcIds.ts +67 -0
  300. package/.yalc/@node-dlc/messaging/lib/messages/DlcInfo.ts +81 -0
  301. package/.yalc/@node-dlc/messaging/lib/messages/DlcMessage.ts +87 -0
  302. package/.yalc/@node-dlc/messaging/lib/messages/DlcOffer.ts +605 -0
  303. package/.yalc/@node-dlc/messaging/lib/messages/DlcSign.ts +354 -0
  304. package/.yalc/@node-dlc/messaging/lib/messages/DlcTransactions.ts +213 -0
  305. package/.yalc/@node-dlc/messaging/lib/messages/EventDescriptor.ts +289 -0
  306. package/.yalc/@node-dlc/messaging/lib/messages/FundingInput.ts +216 -0
  307. package/.yalc/@node-dlc/messaging/lib/messages/FundingSignatures.ts +98 -0
  308. package/.yalc/@node-dlc/messaging/lib/messages/IWireMessage.ts +6 -0
  309. package/.yalc/@node-dlc/messaging/lib/messages/NegotiationFields.ts +252 -0
  310. package/.yalc/@node-dlc/messaging/lib/messages/NodeAnnouncementMessage.ts +145 -0
  311. package/.yalc/@node-dlc/messaging/lib/messages/OracleAnnouncement.ts +176 -0
  312. package/.yalc/@node-dlc/messaging/lib/messages/OracleAttestation.ts +292 -0
  313. package/.yalc/@node-dlc/messaging/lib/messages/OracleEvent.ts +250 -0
  314. package/.yalc/@node-dlc/messaging/lib/messages/OracleEventContainer.ts +89 -0
  315. package/.yalc/@node-dlc/messaging/lib/messages/OracleIdentifier.ts +78 -0
  316. package/.yalc/@node-dlc/messaging/lib/messages/OracleInfo.ts +519 -0
  317. package/.yalc/@node-dlc/messaging/lib/messages/OrderAccept.ts +159 -0
  318. package/.yalc/@node-dlc/messaging/lib/messages/OrderIrcInfo.ts +100 -0
  319. package/.yalc/@node-dlc/messaging/lib/messages/OrderMetadata.ts +119 -0
  320. package/.yalc/@node-dlc/messaging/lib/messages/OrderNegotiationFields.ts +157 -0
  321. package/.yalc/@node-dlc/messaging/lib/messages/OrderOffer.ts +419 -0
  322. package/.yalc/@node-dlc/messaging/lib/messages/OrderPositionInfo.ts +170 -0
  323. package/.yalc/@node-dlc/messaging/lib/messages/PayoutCurvePiece.ts +449 -0
  324. package/.yalc/@node-dlc/messaging/lib/messages/PayoutFunction.ts +240 -0
  325. package/.yalc/@node-dlc/messaging/lib/messages/RoundingIntervals.ts +127 -0
  326. package/.yalc/@node-dlc/messaging/lib/messages/ScriptWitnessV0.ts +63 -0
  327. package/.yalc/@node-dlc/messaging/lib/messages/Tlv.ts +40 -0
  328. package/.yalc/@node-dlc/messaging/lib/serialize/F64.ts +352 -0
  329. package/.yalc/@node-dlc/messaging/lib/serialize/deserializeTlv.ts +15 -0
  330. package/.yalc/@node-dlc/messaging/lib/serialize/getTlv.ts +21 -0
  331. package/.yalc/@node-dlc/messaging/lib/serialize/readTlvs.ts +37 -0
  332. package/.yalc/@node-dlc/messaging/lib/util.ts +33 -0
  333. package/.yalc/@node-dlc/messaging/lib/validation/validate.ts +34 -0
  334. package/.yalc/@node-dlc/messaging/package.json +42 -0
  335. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_3_test.json +210 -0
  336. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_5_test.json +468 -0
  337. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_3_of_5_test.json +1517 -0
  338. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_5_of_5_test.json +545 -0
  339. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_3_of_5_test.json +4761 -0
  340. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_5_of_5_test.json +2169 -0
  341. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_single_oracle_test.json +164 -0
  342. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_hyperbola_test.json +502 -0
  343. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_test.json +262 -0
  344. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_five_oracle_numerical_with_diff_test.json +4382 -0
  345. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_test.json +324 -0
  346. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_with_diff_test.json +652 -0
  347. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_test.json +1138 -0
  348. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_with_diff_test.json +2222 -0
  349. package/.yalc/@node-dlc/messaging/test_vectors/oracle/external_oracle_announcements.json +0 -0
  350. package/.yalc/@node-dlc/messaging/test_vectors/oracle/oracle_message_test_vectors.json +115 -0
  351. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/accept_msg.json +1465 -0
  352. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test.json +12362 -0
  353. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test_scripts.json +57 -0
  354. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_test.json +2766 -0
  355. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_tx_test.json +2899 -0
  356. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg.json +163 -0
  357. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg_disjoint.json +352 -0
  358. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_chunk_msg.json +12635 -0
  359. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_start_msg.json +4022 -0
  360. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/sign_msg.json +383 -0
  361. package/.yalc/@node-dlc/messaging/tsconfig.json +7 -0
  362. package/.yalc/@node-dlc/messaging/yalc.sig +1 -0
  363. package/CHANGELOG.md +72 -0
  364. package/dist/BitcoinDlcProvider.d.ts +17 -16
  365. package/dist/BitcoinDlcProvider.js +345 -315
  366. package/dist/BitcoinDlcProvider.js.map +1 -1
  367. package/dist/utils/Utils.d.ts +6 -6
  368. package/dist/utils/Utils.js +4 -4
  369. package/dist/utils/Utils.js.map +1 -1
  370. package/lib/BitcoinDlcProvider.ts +624 -612
  371. package/lib/utils/Utils.ts +19 -24
  372. package/package.json +10 -10
  373. package/yalc.lock +10 -0
@@ -0,0 +1,1394 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for lib/serde/SerdeUtils.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">lib/serde</a> SerdeUtils.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">42.42% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>70/165</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">24.8% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>31/125</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">60% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>15/25</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">38.89% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>56/144</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ </div>
58
+ <div class='status-line low'></div>
59
+ <pre><table class="coverage">
60
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
+ <a name='L2'></a><a href='#L2'>2</a>
62
+ <a name='L3'></a><a href='#L3'>3</a>
63
+ <a name='L4'></a><a href='#L4'>4</a>
64
+ <a name='L5'></a><a href='#L5'>5</a>
65
+ <a name='L6'></a><a href='#L6'>6</a>
66
+ <a name='L7'></a><a href='#L7'>7</a>
67
+ <a name='L8'></a><a href='#L8'>8</a>
68
+ <a name='L9'></a><a href='#L9'>9</a>
69
+ <a name='L10'></a><a href='#L10'>10</a>
70
+ <a name='L11'></a><a href='#L11'>11</a>
71
+ <a name='L12'></a><a href='#L12'>12</a>
72
+ <a name='L13'></a><a href='#L13'>13</a>
73
+ <a name='L14'></a><a href='#L14'>14</a>
74
+ <a name='L15'></a><a href='#L15'>15</a>
75
+ <a name='L16'></a><a href='#L16'>16</a>
76
+ <a name='L17'></a><a href='#L17'>17</a>
77
+ <a name='L18'></a><a href='#L18'>18</a>
78
+ <a name='L19'></a><a href='#L19'>19</a>
79
+ <a name='L20'></a><a href='#L20'>20</a>
80
+ <a name='L21'></a><a href='#L21'>21</a>
81
+ <a name='L22'></a><a href='#L22'>22</a>
82
+ <a name='L23'></a><a href='#L23'>23</a>
83
+ <a name='L24'></a><a href='#L24'>24</a>
84
+ <a name='L25'></a><a href='#L25'>25</a>
85
+ <a name='L26'></a><a href='#L26'>26</a>
86
+ <a name='L27'></a><a href='#L27'>27</a>
87
+ <a name='L28'></a><a href='#L28'>28</a>
88
+ <a name='L29'></a><a href='#L29'>29</a>
89
+ <a name='L30'></a><a href='#L30'>30</a>
90
+ <a name='L31'></a><a href='#L31'>31</a>
91
+ <a name='L32'></a><a href='#L32'>32</a>
92
+ <a name='L33'></a><a href='#L33'>33</a>
93
+ <a name='L34'></a><a href='#L34'>34</a>
94
+ <a name='L35'></a><a href='#L35'>35</a>
95
+ <a name='L36'></a><a href='#L36'>36</a>
96
+ <a name='L37'></a><a href='#L37'>37</a>
97
+ <a name='L38'></a><a href='#L38'>38</a>
98
+ <a name='L39'></a><a href='#L39'>39</a>
99
+ <a name='L40'></a><a href='#L40'>40</a>
100
+ <a name='L41'></a><a href='#L41'>41</a>
101
+ <a name='L42'></a><a href='#L42'>42</a>
102
+ <a name='L43'></a><a href='#L43'>43</a>
103
+ <a name='L44'></a><a href='#L44'>44</a>
104
+ <a name='L45'></a><a href='#L45'>45</a>
105
+ <a name='L46'></a><a href='#L46'>46</a>
106
+ <a name='L47'></a><a href='#L47'>47</a>
107
+ <a name='L48'></a><a href='#L48'>48</a>
108
+ <a name='L49'></a><a href='#L49'>49</a>
109
+ <a name='L50'></a><a href='#L50'>50</a>
110
+ <a name='L51'></a><a href='#L51'>51</a>
111
+ <a name='L52'></a><a href='#L52'>52</a>
112
+ <a name='L53'></a><a href='#L53'>53</a>
113
+ <a name='L54'></a><a href='#L54'>54</a>
114
+ <a name='L55'></a><a href='#L55'>55</a>
115
+ <a name='L56'></a><a href='#L56'>56</a>
116
+ <a name='L57'></a><a href='#L57'>57</a>
117
+ <a name='L58'></a><a href='#L58'>58</a>
118
+ <a name='L59'></a><a href='#L59'>59</a>
119
+ <a name='L60'></a><a href='#L60'>60</a>
120
+ <a name='L61'></a><a href='#L61'>61</a>
121
+ <a name='L62'></a><a href='#L62'>62</a>
122
+ <a name='L63'></a><a href='#L63'>63</a>
123
+ <a name='L64'></a><a href='#L64'>64</a>
124
+ <a name='L65'></a><a href='#L65'>65</a>
125
+ <a name='L66'></a><a href='#L66'>66</a>
126
+ <a name='L67'></a><a href='#L67'>67</a>
127
+ <a name='L68'></a><a href='#L68'>68</a>
128
+ <a name='L69'></a><a href='#L69'>69</a>
129
+ <a name='L70'></a><a href='#L70'>70</a>
130
+ <a name='L71'></a><a href='#L71'>71</a>
131
+ <a name='L72'></a><a href='#L72'>72</a>
132
+ <a name='L73'></a><a href='#L73'>73</a>
133
+ <a name='L74'></a><a href='#L74'>74</a>
134
+ <a name='L75'></a><a href='#L75'>75</a>
135
+ <a name='L76'></a><a href='#L76'>76</a>
136
+ <a name='L77'></a><a href='#L77'>77</a>
137
+ <a name='L78'></a><a href='#L78'>78</a>
138
+ <a name='L79'></a><a href='#L79'>79</a>
139
+ <a name='L80'></a><a href='#L80'>80</a>
140
+ <a name='L81'></a><a href='#L81'>81</a>
141
+ <a name='L82'></a><a href='#L82'>82</a>
142
+ <a name='L83'></a><a href='#L83'>83</a>
143
+ <a name='L84'></a><a href='#L84'>84</a>
144
+ <a name='L85'></a><a href='#L85'>85</a>
145
+ <a name='L86'></a><a href='#L86'>86</a>
146
+ <a name='L87'></a><a href='#L87'>87</a>
147
+ <a name='L88'></a><a href='#L88'>88</a>
148
+ <a name='L89'></a><a href='#L89'>89</a>
149
+ <a name='L90'></a><a href='#L90'>90</a>
150
+ <a name='L91'></a><a href='#L91'>91</a>
151
+ <a name='L92'></a><a href='#L92'>92</a>
152
+ <a name='L93'></a><a href='#L93'>93</a>
153
+ <a name='L94'></a><a href='#L94'>94</a>
154
+ <a name='L95'></a><a href='#L95'>95</a>
155
+ <a name='L96'></a><a href='#L96'>96</a>
156
+ <a name='L97'></a><a href='#L97'>97</a>
157
+ <a name='L98'></a><a href='#L98'>98</a>
158
+ <a name='L99'></a><a href='#L99'>99</a>
159
+ <a name='L100'></a><a href='#L100'>100</a>
160
+ <a name='L101'></a><a href='#L101'>101</a>
161
+ <a name='L102'></a><a href='#L102'>102</a>
162
+ <a name='L103'></a><a href='#L103'>103</a>
163
+ <a name='L104'></a><a href='#L104'>104</a>
164
+ <a name='L105'></a><a href='#L105'>105</a>
165
+ <a name='L106'></a><a href='#L106'>106</a>
166
+ <a name='L107'></a><a href='#L107'>107</a>
167
+ <a name='L108'></a><a href='#L108'>108</a>
168
+ <a name='L109'></a><a href='#L109'>109</a>
169
+ <a name='L110'></a><a href='#L110'>110</a>
170
+ <a name='L111'></a><a href='#L111'>111</a>
171
+ <a name='L112'></a><a href='#L112'>112</a>
172
+ <a name='L113'></a><a href='#L113'>113</a>
173
+ <a name='L114'></a><a href='#L114'>114</a>
174
+ <a name='L115'></a><a href='#L115'>115</a>
175
+ <a name='L116'></a><a href='#L116'>116</a>
176
+ <a name='L117'></a><a href='#L117'>117</a>
177
+ <a name='L118'></a><a href='#L118'>118</a>
178
+ <a name='L119'></a><a href='#L119'>119</a>
179
+ <a name='L120'></a><a href='#L120'>120</a>
180
+ <a name='L121'></a><a href='#L121'>121</a>
181
+ <a name='L122'></a><a href='#L122'>122</a>
182
+ <a name='L123'></a><a href='#L123'>123</a>
183
+ <a name='L124'></a><a href='#L124'>124</a>
184
+ <a name='L125'></a><a href='#L125'>125</a>
185
+ <a name='L126'></a><a href='#L126'>126</a>
186
+ <a name='L127'></a><a href='#L127'>127</a>
187
+ <a name='L128'></a><a href='#L128'>128</a>
188
+ <a name='L129'></a><a href='#L129'>129</a>
189
+ <a name='L130'></a><a href='#L130'>130</a>
190
+ <a name='L131'></a><a href='#L131'>131</a>
191
+ <a name='L132'></a><a href='#L132'>132</a>
192
+ <a name='L133'></a><a href='#L133'>133</a>
193
+ <a name='L134'></a><a href='#L134'>134</a>
194
+ <a name='L135'></a><a href='#L135'>135</a>
195
+ <a name='L136'></a><a href='#L136'>136</a>
196
+ <a name='L137'></a><a href='#L137'>137</a>
197
+ <a name='L138'></a><a href='#L138'>138</a>
198
+ <a name='L139'></a><a href='#L139'>139</a>
199
+ <a name='L140'></a><a href='#L140'>140</a>
200
+ <a name='L141'></a><a href='#L141'>141</a>
201
+ <a name='L142'></a><a href='#L142'>142</a>
202
+ <a name='L143'></a><a href='#L143'>143</a>
203
+ <a name='L144'></a><a href='#L144'>144</a>
204
+ <a name='L145'></a><a href='#L145'>145</a>
205
+ <a name='L146'></a><a href='#L146'>146</a>
206
+ <a name='L147'></a><a href='#L147'>147</a>
207
+ <a name='L148'></a><a href='#L148'>148</a>
208
+ <a name='L149'></a><a href='#L149'>149</a>
209
+ <a name='L150'></a><a href='#L150'>150</a>
210
+ <a name='L151'></a><a href='#L151'>151</a>
211
+ <a name='L152'></a><a href='#L152'>152</a>
212
+ <a name='L153'></a><a href='#L153'>153</a>
213
+ <a name='L154'></a><a href='#L154'>154</a>
214
+ <a name='L155'></a><a href='#L155'>155</a>
215
+ <a name='L156'></a><a href='#L156'>156</a>
216
+ <a name='L157'></a><a href='#L157'>157</a>
217
+ <a name='L158'></a><a href='#L158'>158</a>
218
+ <a name='L159'></a><a href='#L159'>159</a>
219
+ <a name='L160'></a><a href='#L160'>160</a>
220
+ <a name='L161'></a><a href='#L161'>161</a>
221
+ <a name='L162'></a><a href='#L162'>162</a>
222
+ <a name='L163'></a><a href='#L163'>163</a>
223
+ <a name='L164'></a><a href='#L164'>164</a>
224
+ <a name='L165'></a><a href='#L165'>165</a>
225
+ <a name='L166'></a><a href='#L166'>166</a>
226
+ <a name='L167'></a><a href='#L167'>167</a>
227
+ <a name='L168'></a><a href='#L168'>168</a>
228
+ <a name='L169'></a><a href='#L169'>169</a>
229
+ <a name='L170'></a><a href='#L170'>170</a>
230
+ <a name='L171'></a><a href='#L171'>171</a>
231
+ <a name='L172'></a><a href='#L172'>172</a>
232
+ <a name='L173'></a><a href='#L173'>173</a>
233
+ <a name='L174'></a><a href='#L174'>174</a>
234
+ <a name='L175'></a><a href='#L175'>175</a>
235
+ <a name='L176'></a><a href='#L176'>176</a>
236
+ <a name='L177'></a><a href='#L177'>177</a>
237
+ <a name='L178'></a><a href='#L178'>178</a>
238
+ <a name='L179'></a><a href='#L179'>179</a>
239
+ <a name='L180'></a><a href='#L180'>180</a>
240
+ <a name='L181'></a><a href='#L181'>181</a>
241
+ <a name='L182'></a><a href='#L182'>182</a>
242
+ <a name='L183'></a><a href='#L183'>183</a>
243
+ <a name='L184'></a><a href='#L184'>184</a>
244
+ <a name='L185'></a><a href='#L185'>185</a>
245
+ <a name='L186'></a><a href='#L186'>186</a>
246
+ <a name='L187'></a><a href='#L187'>187</a>
247
+ <a name='L188'></a><a href='#L188'>188</a>
248
+ <a name='L189'></a><a href='#L189'>189</a>
249
+ <a name='L190'></a><a href='#L190'>190</a>
250
+ <a name='L191'></a><a href='#L191'>191</a>
251
+ <a name='L192'></a><a href='#L192'>192</a>
252
+ <a name='L193'></a><a href='#L193'>193</a>
253
+ <a name='L194'></a><a href='#L194'>194</a>
254
+ <a name='L195'></a><a href='#L195'>195</a>
255
+ <a name='L196'></a><a href='#L196'>196</a>
256
+ <a name='L197'></a><a href='#L197'>197</a>
257
+ <a name='L198'></a><a href='#L198'>198</a>
258
+ <a name='L199'></a><a href='#L199'>199</a>
259
+ <a name='L200'></a><a href='#L200'>200</a>
260
+ <a name='L201'></a><a href='#L201'>201</a>
261
+ <a name='L202'></a><a href='#L202'>202</a>
262
+ <a name='L203'></a><a href='#L203'>203</a>
263
+ <a name='L204'></a><a href='#L204'>204</a>
264
+ <a name='L205'></a><a href='#L205'>205</a>
265
+ <a name='L206'></a><a href='#L206'>206</a>
266
+ <a name='L207'></a><a href='#L207'>207</a>
267
+ <a name='L208'></a><a href='#L208'>208</a>
268
+ <a name='L209'></a><a href='#L209'>209</a>
269
+ <a name='L210'></a><a href='#L210'>210</a>
270
+ <a name='L211'></a><a href='#L211'>211</a>
271
+ <a name='L212'></a><a href='#L212'>212</a>
272
+ <a name='L213'></a><a href='#L213'>213</a>
273
+ <a name='L214'></a><a href='#L214'>214</a>
274
+ <a name='L215'></a><a href='#L215'>215</a>
275
+ <a name='L216'></a><a href='#L216'>216</a>
276
+ <a name='L217'></a><a href='#L217'>217</a>
277
+ <a name='L218'></a><a href='#L218'>218</a>
278
+ <a name='L219'></a><a href='#L219'>219</a>
279
+ <a name='L220'></a><a href='#L220'>220</a>
280
+ <a name='L221'></a><a href='#L221'>221</a>
281
+ <a name='L222'></a><a href='#L222'>222</a>
282
+ <a name='L223'></a><a href='#L223'>223</a>
283
+ <a name='L224'></a><a href='#L224'>224</a>
284
+ <a name='L225'></a><a href='#L225'>225</a>
285
+ <a name='L226'></a><a href='#L226'>226</a>
286
+ <a name='L227'></a><a href='#L227'>227</a>
287
+ <a name='L228'></a><a href='#L228'>228</a>
288
+ <a name='L229'></a><a href='#L229'>229</a>
289
+ <a name='L230'></a><a href='#L230'>230</a>
290
+ <a name='L231'></a><a href='#L231'>231</a>
291
+ <a name='L232'></a><a href='#L232'>232</a>
292
+ <a name='L233'></a><a href='#L233'>233</a>
293
+ <a name='L234'></a><a href='#L234'>234</a>
294
+ <a name='L235'></a><a href='#L235'>235</a>
295
+ <a name='L236'></a><a href='#L236'>236</a>
296
+ <a name='L237'></a><a href='#L237'>237</a>
297
+ <a name='L238'></a><a href='#L238'>238</a>
298
+ <a name='L239'></a><a href='#L239'>239</a>
299
+ <a name='L240'></a><a href='#L240'>240</a>
300
+ <a name='L241'></a><a href='#L241'>241</a>
301
+ <a name='L242'></a><a href='#L242'>242</a>
302
+ <a name='L243'></a><a href='#L243'>243</a>
303
+ <a name='L244'></a><a href='#L244'>244</a>
304
+ <a name='L245'></a><a href='#L245'>245</a>
305
+ <a name='L246'></a><a href='#L246'>246</a>
306
+ <a name='L247'></a><a href='#L247'>247</a>
307
+ <a name='L248'></a><a href='#L248'>248</a>
308
+ <a name='L249'></a><a href='#L249'>249</a>
309
+ <a name='L250'></a><a href='#L250'>250</a>
310
+ <a name='L251'></a><a href='#L251'>251</a>
311
+ <a name='L252'></a><a href='#L252'>252</a>
312
+ <a name='L253'></a><a href='#L253'>253</a>
313
+ <a name='L254'></a><a href='#L254'>254</a>
314
+ <a name='L255'></a><a href='#L255'>255</a>
315
+ <a name='L256'></a><a href='#L256'>256</a>
316
+ <a name='L257'></a><a href='#L257'>257</a>
317
+ <a name='L258'></a><a href='#L258'>258</a>
318
+ <a name='L259'></a><a href='#L259'>259</a>
319
+ <a name='L260'></a><a href='#L260'>260</a>
320
+ <a name='L261'></a><a href='#L261'>261</a>
321
+ <a name='L262'></a><a href='#L262'>262</a>
322
+ <a name='L263'></a><a href='#L263'>263</a>
323
+ <a name='L264'></a><a href='#L264'>264</a>
324
+ <a name='L265'></a><a href='#L265'>265</a>
325
+ <a name='L266'></a><a href='#L266'>266</a>
326
+ <a name='L267'></a><a href='#L267'>267</a>
327
+ <a name='L268'></a><a href='#L268'>268</a>
328
+ <a name='L269'></a><a href='#L269'>269</a>
329
+ <a name='L270'></a><a href='#L270'>270</a>
330
+ <a name='L271'></a><a href='#L271'>271</a>
331
+ <a name='L272'></a><a href='#L272'>272</a>
332
+ <a name='L273'></a><a href='#L273'>273</a>
333
+ <a name='L274'></a><a href='#L274'>274</a>
334
+ <a name='L275'></a><a href='#L275'>275</a>
335
+ <a name='L276'></a><a href='#L276'>276</a>
336
+ <a name='L277'></a><a href='#L277'>277</a>
337
+ <a name='L278'></a><a href='#L278'>278</a>
338
+ <a name='L279'></a><a href='#L279'>279</a>
339
+ <a name='L280'></a><a href='#L280'>280</a>
340
+ <a name='L281'></a><a href='#L281'>281</a>
341
+ <a name='L282'></a><a href='#L282'>282</a>
342
+ <a name='L283'></a><a href='#L283'>283</a>
343
+ <a name='L284'></a><a href='#L284'>284</a>
344
+ <a name='L285'></a><a href='#L285'>285</a>
345
+ <a name='L286'></a><a href='#L286'>286</a>
346
+ <a name='L287'></a><a href='#L287'>287</a>
347
+ <a name='L288'></a><a href='#L288'>288</a>
348
+ <a name='L289'></a><a href='#L289'>289</a>
349
+ <a name='L290'></a><a href='#L290'>290</a>
350
+ <a name='L291'></a><a href='#L291'>291</a>
351
+ <a name='L292'></a><a href='#L292'>292</a>
352
+ <a name='L293'></a><a href='#L293'>293</a>
353
+ <a name='L294'></a><a href='#L294'>294</a>
354
+ <a name='L295'></a><a href='#L295'>295</a>
355
+ <a name='L296'></a><a href='#L296'>296</a>
356
+ <a name='L297'></a><a href='#L297'>297</a>
357
+ <a name='L298'></a><a href='#L298'>298</a>
358
+ <a name='L299'></a><a href='#L299'>299</a>
359
+ <a name='L300'></a><a href='#L300'>300</a>
360
+ <a name='L301'></a><a href='#L301'>301</a>
361
+ <a name='L302'></a><a href='#L302'>302</a>
362
+ <a name='L303'></a><a href='#L303'>303</a>
363
+ <a name='L304'></a><a href='#L304'>304</a>
364
+ <a name='L305'></a><a href='#L305'>305</a>
365
+ <a name='L306'></a><a href='#L306'>306</a>
366
+ <a name='L307'></a><a href='#L307'>307</a>
367
+ <a name='L308'></a><a href='#L308'>308</a>
368
+ <a name='L309'></a><a href='#L309'>309</a>
369
+ <a name='L310'></a><a href='#L310'>310</a>
370
+ <a name='L311'></a><a href='#L311'>311</a>
371
+ <a name='L312'></a><a href='#L312'>312</a>
372
+ <a name='L313'></a><a href='#L313'>313</a>
373
+ <a name='L314'></a><a href='#L314'>314</a>
374
+ <a name='L315'></a><a href='#L315'>315</a>
375
+ <a name='L316'></a><a href='#L316'>316</a>
376
+ <a name='L317'></a><a href='#L317'>317</a>
377
+ <a name='L318'></a><a href='#L318'>318</a>
378
+ <a name='L319'></a><a href='#L319'>319</a>
379
+ <a name='L320'></a><a href='#L320'>320</a>
380
+ <a name='L321'></a><a href='#L321'>321</a>
381
+ <a name='L322'></a><a href='#L322'>322</a>
382
+ <a name='L323'></a><a href='#L323'>323</a>
383
+ <a name='L324'></a><a href='#L324'>324</a>
384
+ <a name='L325'></a><a href='#L325'>325</a>
385
+ <a name='L326'></a><a href='#L326'>326</a>
386
+ <a name='L327'></a><a href='#L327'>327</a>
387
+ <a name='L328'></a><a href='#L328'>328</a>
388
+ <a name='L329'></a><a href='#L329'>329</a>
389
+ <a name='L330'></a><a href='#L330'>330</a>
390
+ <a name='L331'></a><a href='#L331'>331</a>
391
+ <a name='L332'></a><a href='#L332'>332</a>
392
+ <a name='L333'></a><a href='#L333'>333</a>
393
+ <a name='L334'></a><a href='#L334'>334</a>
394
+ <a name='L335'></a><a href='#L335'>335</a>
395
+ <a name='L336'></a><a href='#L336'>336</a>
396
+ <a name='L337'></a><a href='#L337'>337</a>
397
+ <a name='L338'></a><a href='#L338'>338</a>
398
+ <a name='L339'></a><a href='#L339'>339</a>
399
+ <a name='L340'></a><a href='#L340'>340</a>
400
+ <a name='L341'></a><a href='#L341'>341</a>
401
+ <a name='L342'></a><a href='#L342'>342</a>
402
+ <a name='L343'></a><a href='#L343'>343</a>
403
+ <a name='L344'></a><a href='#L344'>344</a>
404
+ <a name='L345'></a><a href='#L345'>345</a>
405
+ <a name='L346'></a><a href='#L346'>346</a>
406
+ <a name='L347'></a><a href='#L347'>347</a>
407
+ <a name='L348'></a><a href='#L348'>348</a>
408
+ <a name='L349'></a><a href='#L349'>349</a>
409
+ <a name='L350'></a><a href='#L350'>350</a>
410
+ <a name='L351'></a><a href='#L351'>351</a>
411
+ <a name='L352'></a><a href='#L352'>352</a>
412
+ <a name='L353'></a><a href='#L353'>353</a>
413
+ <a name='L354'></a><a href='#L354'>354</a>
414
+ <a name='L355'></a><a href='#L355'>355</a>
415
+ <a name='L356'></a><a href='#L356'>356</a>
416
+ <a name='L357'></a><a href='#L357'>357</a>
417
+ <a name='L358'></a><a href='#L358'>358</a>
418
+ <a name='L359'></a><a href='#L359'>359</a>
419
+ <a name='L360'></a><a href='#L360'>360</a>
420
+ <a name='L361'></a><a href='#L361'>361</a>
421
+ <a name='L362'></a><a href='#L362'>362</a>
422
+ <a name='L363'></a><a href='#L363'>363</a>
423
+ <a name='L364'></a><a href='#L364'>364</a>
424
+ <a name='L365'></a><a href='#L365'>365</a>
425
+ <a name='L366'></a><a href='#L366'>366</a>
426
+ <a name='L367'></a><a href='#L367'>367</a>
427
+ <a name='L368'></a><a href='#L368'>368</a>
428
+ <a name='L369'></a><a href='#L369'>369</a>
429
+ <a name='L370'></a><a href='#L370'>370</a>
430
+ <a name='L371'></a><a href='#L371'>371</a>
431
+ <a name='L372'></a><a href='#L372'>372</a>
432
+ <a name='L373'></a><a href='#L373'>373</a>
433
+ <a name='L374'></a><a href='#L374'>374</a>
434
+ <a name='L375'></a><a href='#L375'>375</a>
435
+ <a name='L376'></a><a href='#L376'>376</a>
436
+ <a name='L377'></a><a href='#L377'>377</a>
437
+ <a name='L378'></a><a href='#L378'>378</a>
438
+ <a name='L379'></a><a href='#L379'>379</a>
439
+ <a name='L380'></a><a href='#L380'>380</a>
440
+ <a name='L381'></a><a href='#L381'>381</a>
441
+ <a name='L382'></a><a href='#L382'>382</a>
442
+ <a name='L383'></a><a href='#L383'>383</a>
443
+ <a name='L384'></a><a href='#L384'>384</a>
444
+ <a name='L385'></a><a href='#L385'>385</a>
445
+ <a name='L386'></a><a href='#L386'>386</a>
446
+ <a name='L387'></a><a href='#L387'>387</a>
447
+ <a name='L388'></a><a href='#L388'>388</a>
448
+ <a name='L389'></a><a href='#L389'>389</a>
449
+ <a name='L390'></a><a href='#L390'>390</a>
450
+ <a name='L391'></a><a href='#L391'>391</a>
451
+ <a name='L392'></a><a href='#L392'>392</a>
452
+ <a name='L393'></a><a href='#L393'>393</a>
453
+ <a name='L394'></a><a href='#L394'>394</a>
454
+ <a name='L395'></a><a href='#L395'>395</a>
455
+ <a name='L396'></a><a href='#L396'>396</a>
456
+ <a name='L397'></a><a href='#L397'>397</a>
457
+ <a name='L398'></a><a href='#L398'>398</a>
458
+ <a name='L399'></a><a href='#L399'>399</a>
459
+ <a name='L400'></a><a href='#L400'>400</a>
460
+ <a name='L401'></a><a href='#L401'>401</a>
461
+ <a name='L402'></a><a href='#L402'>402</a>
462
+ <a name='L403'></a><a href='#L403'>403</a>
463
+ <a name='L404'></a><a href='#L404'>404</a>
464
+ <a name='L405'></a><a href='#L405'>405</a>
465
+ <a name='L406'></a><a href='#L406'>406</a>
466
+ <a name='L407'></a><a href='#L407'>407</a>
467
+ <a name='L408'></a><a href='#L408'>408</a>
468
+ <a name='L409'></a><a href='#L409'>409</a>
469
+ <a name='L410'></a><a href='#L410'>410</a>
470
+ <a name='L411'></a><a href='#L411'>411</a>
471
+ <a name='L412'></a><a href='#L412'>412</a>
472
+ <a name='L413'></a><a href='#L413'>413</a>
473
+ <a name='L414'></a><a href='#L414'>414</a>
474
+ <a name='L415'></a><a href='#L415'>415</a>
475
+ <a name='L416'></a><a href='#L416'>416</a>
476
+ <a name='L417'></a><a href='#L417'>417</a>
477
+ <a name='L418'></a><a href='#L418'>418</a>
478
+ <a name='L419'></a><a href='#L419'>419</a>
479
+ <a name='L420'></a><a href='#L420'>420</a>
480
+ <a name='L421'></a><a href='#L421'>421</a>
481
+ <a name='L422'></a><a href='#L422'>422</a>
482
+ <a name='L423'></a><a href='#L423'>423</a>
483
+ <a name='L424'></a><a href='#L424'>424</a>
484
+ <a name='L425'></a><a href='#L425'>425</a>
485
+ <a name='L426'></a><a href='#L426'>426</a>
486
+ <a name='L427'></a><a href='#L427'>427</a>
487
+ <a name='L428'></a><a href='#L428'>428</a>
488
+ <a name='L429'></a><a href='#L429'>429</a>
489
+ <a name='L430'></a><a href='#L430'>430</a>
490
+ <a name='L431'></a><a href='#L431'>431</a>
491
+ <a name='L432'></a><a href='#L432'>432</a>
492
+ <a name='L433'></a><a href='#L433'>433</a>
493
+ <a name='L434'></a><a href='#L434'>434</a>
494
+ <a name='L435'></a><a href='#L435'>435</a>
495
+ <a name='L436'></a><a href='#L436'>436</a>
496
+ <a name='L437'></a><a href='#L437'>437</a>
497
+ <a name='L438'></a><a href='#L438'>438</a>
498
+ <a name='L439'></a><a href='#L439'>439</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
499
+ <span class="cline-any cline-neutral">&nbsp;</span>
500
+ <span class="cline-any cline-neutral">&nbsp;</span>
501
+ <span class="cline-any cline-neutral">&nbsp;</span>
502
+ <span class="cline-any cline-neutral">&nbsp;</span>
503
+ <span class="cline-any cline-neutral">&nbsp;</span>
504
+ <span class="cline-any cline-neutral">&nbsp;</span>
505
+ <span class="cline-any cline-neutral">&nbsp;</span>
506
+ <span class="cline-any cline-neutral">&nbsp;</span>
507
+ <span class="cline-any cline-neutral">&nbsp;</span>
508
+ <span class="cline-any cline-neutral">&nbsp;</span>
509
+ <span class="cline-any cline-neutral">&nbsp;</span>
510
+ <span class="cline-any cline-neutral">&nbsp;</span>
511
+ <span class="cline-any cline-neutral">&nbsp;</span>
512
+ <span class="cline-any cline-neutral">&nbsp;</span>
513
+ <span class="cline-any cline-neutral">&nbsp;</span>
514
+ <span class="cline-any cline-neutral">&nbsp;</span>
515
+ <span class="cline-any cline-neutral">&nbsp;</span>
516
+ <span class="cline-any cline-neutral">&nbsp;</span>
517
+ <span class="cline-any cline-neutral">&nbsp;</span>
518
+ <span class="cline-any cline-neutral">&nbsp;</span>
519
+ <span class="cline-any cline-neutral">&nbsp;</span>
520
+ <span class="cline-any cline-neutral">&nbsp;</span>
521
+ <span class="cline-any cline-yes">1x</span>
522
+ <span class="cline-any cline-neutral">&nbsp;</span>
523
+ <span class="cline-any cline-neutral">&nbsp;</span>
524
+ <span class="cline-any cline-no">&nbsp;</span>
525
+ <span class="cline-any cline-neutral">&nbsp;</span>
526
+ <span class="cline-any cline-neutral">&nbsp;</span>
527
+ <span class="cline-any cline-neutral">&nbsp;</span>
528
+ <span class="cline-any cline-neutral">&nbsp;</span>
529
+ <span class="cline-any cline-no">&nbsp;</span>
530
+ <span class="cline-any cline-neutral">&nbsp;</span>
531
+ <span class="cline-any cline-neutral">&nbsp;</span>
532
+ <span class="cline-any cline-neutral">&nbsp;</span>
533
+ <span class="cline-any cline-neutral">&nbsp;</span>
534
+ <span class="cline-any cline-yes">40x</span>
535
+ <span class="cline-any cline-yes">40x</span>
536
+ <span class="cline-any cline-yes">40x</span>
537
+ <span class="cline-any cline-yes">40x</span>
538
+ <span class="cline-any cline-no">&nbsp;</span>
539
+ <span class="cline-any cline-neutral">&nbsp;</span>
540
+ <span class="cline-any cline-neutral">&nbsp;</span>
541
+ <span class="cline-any cline-neutral">&nbsp;</span>
542
+ <span class="cline-any cline-neutral">&nbsp;</span>
543
+ <span class="cline-any cline-yes">20x</span>
544
+ <span class="cline-any cline-neutral">&nbsp;</span>
545
+ <span class="cline-any cline-neutral">&nbsp;</span>
546
+ <span class="cline-any cline-neutral">&nbsp;</span>
547
+ <span class="cline-any cline-yes">20x</span>
548
+ <span class="cline-any cline-neutral">&nbsp;</span>
549
+ <span class="cline-any cline-neutral">&nbsp;</span>
550
+ <span class="cline-any cline-no">&nbsp;</span>
551
+ <span class="cline-any cline-neutral">&nbsp;</span>
552
+ <span class="cline-any cline-neutral">&nbsp;</span>
553
+ <span class="cline-any cline-neutral">&nbsp;</span>
554
+ <span class="cline-any cline-neutral">&nbsp;</span>
555
+ <span class="cline-any cline-yes">30x</span>
556
+ <span class="cline-any cline-neutral">&nbsp;</span>
557
+ <span class="cline-any cline-yes">30x</span>
558
+ <span class="cline-any cline-yes">30x</span>
559
+ <span class="cline-any cline-yes">3x</span>
560
+ <span class="cline-any cline-yes">3x</span>
561
+ <span class="cline-any cline-neutral">&nbsp;</span>
562
+ <span class="cline-any cline-no">&nbsp;</span>
563
+ <span class="cline-any cline-no">&nbsp;</span>
564
+ <span class="cline-any cline-no">&nbsp;</span>
565
+ <span class="cline-any cline-neutral">&nbsp;</span>
566
+ <span class="cline-any cline-neutral">&nbsp;</span>
567
+ <span class="cline-any cline-yes">27x</span>
568
+ <span class="cline-any cline-yes">27x</span>
569
+ <span class="cline-any cline-yes">27x</span>
570
+ <span class="cline-any cline-neutral">&nbsp;</span>
571
+ <span class="cline-any cline-neutral">&nbsp;</span>
572
+ <span class="cline-any cline-no">&nbsp;</span>
573
+ <span class="cline-any cline-no">&nbsp;</span>
574
+ <span class="cline-any cline-no">&nbsp;</span>
575
+ <span class="cline-any cline-neutral">&nbsp;</span>
576
+ <span class="cline-any cline-no">&nbsp;</span>
577
+ <span class="cline-any cline-neutral">&nbsp;</span>
578
+ <span class="cline-any cline-no">&nbsp;</span>
579
+ <span class="cline-any cline-neutral">&nbsp;</span>
580
+ <span class="cline-any cline-neutral">&nbsp;</span>
581
+ <span class="cline-any cline-neutral">&nbsp;</span>
582
+ <span class="cline-any cline-neutral">&nbsp;</span>
583
+ <span class="cline-any cline-neutral">&nbsp;</span>
584
+ <span class="cline-any cline-no">&nbsp;</span>
585
+ <span class="cline-any cline-no">&nbsp;</span>
586
+ <span class="cline-any cline-neutral">&nbsp;</span>
587
+ <span class="cline-any cline-no">&nbsp;</span>
588
+ <span class="cline-any cline-no">&nbsp;</span>
589
+ <span class="cline-any cline-neutral">&nbsp;</span>
590
+ <span class="cline-any cline-neutral">&nbsp;</span>
591
+ <span class="cline-any cline-no">&nbsp;</span>
592
+ <span class="cline-any cline-neutral">&nbsp;</span>
593
+ <span class="cline-any cline-no">&nbsp;</span>
594
+ <span class="cline-any cline-neutral">&nbsp;</span>
595
+ <span class="cline-any cline-neutral">&nbsp;</span>
596
+ <span class="cline-any cline-neutral">&nbsp;</span>
597
+ <span class="cline-any cline-neutral">&nbsp;</span>
598
+ <span class="cline-any cline-neutral">&nbsp;</span>
599
+ <span class="cline-any cline-neutral">&nbsp;</span>
600
+ <span class="cline-any cline-neutral">&nbsp;</span>
601
+ <span class="cline-any cline-neutral">&nbsp;</span>
602
+ <span class="cline-any cline-neutral">&nbsp;</span>
603
+ <span class="cline-any cline-yes">35x</span>
604
+ <span class="cline-any cline-neutral">&nbsp;</span>
605
+ <span class="cline-any cline-no">&nbsp;</span>
606
+ <span class="cline-any cline-no">&nbsp;</span>
607
+ <span class="cline-any cline-neutral">&nbsp;</span>
608
+ <span class="cline-any cline-neutral">&nbsp;</span>
609
+ <span class="cline-any cline-no">&nbsp;</span>
610
+ <span class="cline-any cline-neutral">&nbsp;</span>
611
+ <span class="cline-any cline-neutral">&nbsp;</span>
612
+ <span class="cline-any cline-neutral">&nbsp;</span>
613
+ <span class="cline-any cline-neutral">&nbsp;</span>
614
+ <span class="cline-any cline-neutral">&nbsp;</span>
615
+ <span class="cline-any cline-neutral">&nbsp;</span>
616
+ <span class="cline-any cline-neutral">&nbsp;</span>
617
+ <span class="cline-any cline-yes">20x</span>
618
+ <span class="cline-any cline-neutral">&nbsp;</span>
619
+ <span class="cline-any cline-yes">20x</span>
620
+ <span class="cline-any cline-neutral">&nbsp;</span>
621
+ <span class="cline-any cline-no">&nbsp;</span>
622
+ <span class="cline-any cline-neutral">&nbsp;</span>
623
+ <span class="cline-any cline-neutral">&nbsp;</span>
624
+ <span class="cline-any cline-neutral">&nbsp;</span>
625
+ <span class="cline-any cline-no">&nbsp;</span>
626
+ <span class="cline-any cline-neutral">&nbsp;</span>
627
+ <span class="cline-any cline-neutral">&nbsp;</span>
628
+ <span class="cline-any cline-neutral">&nbsp;</span>
629
+ <span class="cline-any cline-neutral">&nbsp;</span>
630
+ <span class="cline-any cline-neutral">&nbsp;</span>
631
+ <span class="cline-any cline-no">&nbsp;</span>
632
+ <span class="cline-any cline-neutral">&nbsp;</span>
633
+ <span class="cline-any cline-no">&nbsp;</span>
634
+ <span class="cline-any cline-no">&nbsp;</span>
635
+ <span class="cline-any cline-neutral">&nbsp;</span>
636
+ <span class="cline-any cline-neutral">&nbsp;</span>
637
+ <span class="cline-any cline-no">&nbsp;</span>
638
+ <span class="cline-any cline-neutral">&nbsp;</span>
639
+ <span class="cline-any cline-neutral">&nbsp;</span>
640
+ <span class="cline-any cline-no">&nbsp;</span>
641
+ <span class="cline-any cline-no">&nbsp;</span>
642
+ <span class="cline-any cline-no">&nbsp;</span>
643
+ <span class="cline-any cline-neutral">&nbsp;</span>
644
+ <span class="cline-any cline-no">&nbsp;</span>
645
+ <span class="cline-any cline-neutral">&nbsp;</span>
646
+ <span class="cline-any cline-neutral">&nbsp;</span>
647
+ <span class="cline-any cline-neutral">&nbsp;</span>
648
+ <span class="cline-any cline-neutral">&nbsp;</span>
649
+ <span class="cline-any cline-neutral">&nbsp;</span>
650
+ <span class="cline-any cline-no">&nbsp;</span>
651
+ <span class="cline-any cline-neutral">&nbsp;</span>
652
+ <span class="cline-any cline-no">&nbsp;</span>
653
+ <span class="cline-any cline-no">&nbsp;</span>
654
+ <span class="cline-any cline-no">&nbsp;</span>
655
+ <span class="cline-any cline-neutral">&nbsp;</span>
656
+ <span class="cline-any cline-no">&nbsp;</span>
657
+ <span class="cline-any cline-neutral">&nbsp;</span>
658
+ <span class="cline-any cline-neutral">&nbsp;</span>
659
+ <span class="cline-any cline-neutral">&nbsp;</span>
660
+ <span class="cline-any cline-neutral">&nbsp;</span>
661
+ <span class="cline-any cline-neutral">&nbsp;</span>
662
+ <span class="cline-any cline-yes">20x</span>
663
+ <span class="cline-any cline-neutral">&nbsp;</span>
664
+ <span class="cline-any cline-neutral">&nbsp;</span>
665
+ <span class="cline-any cline-yes">20x</span>
666
+ <span class="cline-any cline-neutral">&nbsp;</span>
667
+ <span class="cline-any cline-neutral">&nbsp;</span>
668
+ <span class="cline-any cline-yes">20x</span>
669
+ <span class="cline-any cline-neutral">&nbsp;</span>
670
+ <span class="cline-any cline-neutral">&nbsp;</span>
671
+ <span class="cline-any cline-neutral">&nbsp;</span>
672
+ <span class="cline-any cline-neutral">&nbsp;</span>
673
+ <span class="cline-any cline-neutral">&nbsp;</span>
674
+ <span class="cline-any cline-neutral">&nbsp;</span>
675
+ <span class="cline-any cline-neutral">&nbsp;</span>
676
+ <span class="cline-any cline-neutral">&nbsp;</span>
677
+ <span class="cline-any cline-neutral">&nbsp;</span>
678
+ <span class="cline-any cline-neutral">&nbsp;</span>
679
+ <span class="cline-any cline-neutral">&nbsp;</span>
680
+ <span class="cline-any cline-neutral">&nbsp;</span>
681
+ <span class="cline-any cline-neutral">&nbsp;</span>
682
+ <span class="cline-any cline-neutral">&nbsp;</span>
683
+ <span class="cline-any cline-neutral">&nbsp;</span>
684
+ <span class="cline-any cline-neutral">&nbsp;</span>
685
+ <span class="cline-any cline-neutral">&nbsp;</span>
686
+ <span class="cline-any cline-neutral">&nbsp;</span>
687
+ <span class="cline-any cline-neutral">&nbsp;</span>
688
+ <span class="cline-any cline-neutral">&nbsp;</span>
689
+ <span class="cline-any cline-neutral">&nbsp;</span>
690
+ <span class="cline-any cline-yes">20x</span>
691
+ <span class="cline-any cline-no">&nbsp;</span>
692
+ <span class="cline-any cline-neutral">&nbsp;</span>
693
+ <span class="cline-any cline-neutral">&nbsp;</span>
694
+ <span class="cline-any cline-yes">20x</span>
695
+ <span class="cline-any cline-neutral">&nbsp;</span>
696
+ <span class="cline-any cline-neutral">&nbsp;</span>
697
+ <span class="cline-any cline-neutral">&nbsp;</span>
698
+ <span class="cline-any cline-neutral">&nbsp;</span>
699
+ <span class="cline-any cline-neutral">&nbsp;</span>
700
+ <span class="cline-any cline-neutral">&nbsp;</span>
701
+ <span class="cline-any cline-neutral">&nbsp;</span>
702
+ <span class="cline-any cline-neutral">&nbsp;</span>
703
+ <span class="cline-any cline-neutral">&nbsp;</span>
704
+ <span class="cline-any cline-yes">1x</span>
705
+ <span class="cline-any cline-neutral">&nbsp;</span>
706
+ <span class="cline-any cline-neutral">&nbsp;</span>
707
+ <span class="cline-any cline-neutral">&nbsp;</span>
708
+ <span class="cline-any cline-neutral">&nbsp;</span>
709
+ <span class="cline-any cline-neutral">&nbsp;</span>
710
+ <span class="cline-any cline-neutral">&nbsp;</span>
711
+ <span class="cline-any cline-neutral">&nbsp;</span>
712
+ <span class="cline-any cline-neutral">&nbsp;</span>
713
+ <span class="cline-any cline-neutral">&nbsp;</span>
714
+ <span class="cline-any cline-yes">5x</span>
715
+ <span class="cline-any cline-yes">35x</span>
716
+ <span class="cline-any cline-neutral">&nbsp;</span>
717
+ <span class="cline-any cline-neutral">&nbsp;</span>
718
+ <span class="cline-any cline-yes">35x</span>
719
+ <span class="cline-any cline-yes">20x</span>
720
+ <span class="cline-any cline-neutral">&nbsp;</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
+ <span class="cline-any cline-neutral">&nbsp;</span>
723
+ <span class="cline-any cline-yes">35x</span>
724
+ <span class="cline-any cline-no">&nbsp;</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-yes">35x</span>
728
+ <span class="cline-any cline-neutral">&nbsp;</span>
729
+ <span class="cline-any cline-yes">35x</span>
730
+ <span class="cline-any cline-no">&nbsp;</span>
731
+ <span class="cline-any cline-no">&nbsp;</span>
732
+ <span class="cline-any cline-no">&nbsp;</span>
733
+ <span class="cline-any cline-neutral">&nbsp;</span>
734
+ <span class="cline-any cline-neutral">&nbsp;</span>
735
+ <span class="cline-any cline-neutral">&nbsp;</span>
736
+ <span class="cline-any cline-yes">35x</span>
737
+ <span class="cline-any cline-yes">35x</span>
738
+ <span class="cline-any cline-neutral">&nbsp;</span>
739
+ <span class="cline-any cline-neutral">&nbsp;</span>
740
+ <span class="cline-any cline-yes">35x</span>
741
+ <span class="cline-any cline-no">&nbsp;</span>
742
+ <span class="cline-any cline-neutral">&nbsp;</span>
743
+ <span class="cline-any cline-neutral">&nbsp;</span>
744
+ <span class="cline-any cline-yes">35x</span>
745
+ <span class="cline-any cline-yes">30x</span>
746
+ <span class="cline-any cline-neutral">&nbsp;</span>
747
+ <span class="cline-any cline-no">&nbsp;</span>
748
+ <span class="cline-any cline-no">&nbsp;</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</span>
750
+ <span class="cline-any cline-no">&nbsp;</span>
751
+ <span class="cline-any cline-no">&nbsp;</span>
752
+ <span class="cline-any cline-neutral">&nbsp;</span>
753
+ <span class="cline-any cline-yes">30x</span>
754
+ <span class="cline-any cline-yes">30x</span>
755
+ <span class="cline-any cline-neutral">&nbsp;</span>
756
+ <span class="cline-any cline-no">&nbsp;</span>
757
+ <span class="cline-any cline-no">&nbsp;</span>
758
+ <span class="cline-any cline-neutral">&nbsp;</span>
759
+ <span class="cline-any cline-no">&nbsp;</span>
760
+ <span class="cline-any cline-no">&nbsp;</span>
761
+ <span class="cline-any cline-neutral">&nbsp;</span>
762
+ <span class="cline-any cline-neutral">&nbsp;</span>
763
+ <span class="cline-any cline-no">&nbsp;</span>
764
+ <span class="cline-any cline-no">&nbsp;</span>
765
+ <span class="cline-any cline-no">&nbsp;</span>
766
+ <span class="cline-any cline-neutral">&nbsp;</span>
767
+ <span class="cline-any cline-no">&nbsp;</span>
768
+ <span class="cline-any cline-neutral">&nbsp;</span>
769
+ <span class="cline-any cline-no">&nbsp;</span>
770
+ <span class="cline-any cline-neutral">&nbsp;</span>
771
+ <span class="cline-any cline-neutral">&nbsp;</span>
772
+ <span class="cline-any cline-no">&nbsp;</span>
773
+ <span class="cline-any cline-neutral">&nbsp;</span>
774
+ <span class="cline-any cline-neutral">&nbsp;</span>
775
+ <span class="cline-any cline-no">&nbsp;</span>
776
+ <span class="cline-any cline-neutral">&nbsp;</span>
777
+ <span class="cline-any cline-no">&nbsp;</span>
778
+ <span class="cline-any cline-neutral">&nbsp;</span>
779
+ <span class="cline-any cline-no">&nbsp;</span>
780
+ <span class="cline-any cline-neutral">&nbsp;</span>
781
+ <span class="cline-any cline-neutral">&nbsp;</span>
782
+ <span class="cline-any cline-neutral">&nbsp;</span>
783
+ <span class="cline-any cline-yes">35x</span>
784
+ <span class="cline-any cline-neutral">&nbsp;</span>
785
+ <span class="cline-any cline-neutral">&nbsp;</span>
786
+ <span class="cline-any cline-neutral">&nbsp;</span>
787
+ <span class="cline-any cline-yes">5x</span>
788
+ <span class="cline-any cline-neutral">&nbsp;</span>
789
+ <span class="cline-any cline-neutral">&nbsp;</span>
790
+ <span class="cline-any cline-neutral">&nbsp;</span>
791
+ <span class="cline-any cline-neutral">&nbsp;</span>
792
+ <span class="cline-any cline-no">&nbsp;</span>
793
+ <span class="cline-any cline-no">&nbsp;</span>
794
+ <span class="cline-any cline-neutral">&nbsp;</span>
795
+ <span class="cline-any cline-no">&nbsp;</span>
796
+ <span class="cline-any cline-no">&nbsp;</span>
797
+ <span class="cline-any cline-neutral">&nbsp;</span>
798
+ <span class="cline-any cline-no">&nbsp;</span>
799
+ <span class="cline-any cline-no">&nbsp;</span>
800
+ <span class="cline-any cline-neutral">&nbsp;</span>
801
+ <span class="cline-any cline-neutral">&nbsp;</span>
802
+ <span class="cline-any cline-no">&nbsp;</span>
803
+ <span class="cline-any cline-neutral">&nbsp;</span>
804
+ <span class="cline-any cline-neutral">&nbsp;</span>
805
+ <span class="cline-any cline-no">&nbsp;</span>
806
+ <span class="cline-any cline-no">&nbsp;</span>
807
+ <span class="cline-any cline-neutral">&nbsp;</span>
808
+ <span class="cline-any cline-neutral">&nbsp;</span>
809
+ <span class="cline-any cline-no">&nbsp;</span>
810
+ <span class="cline-any cline-no">&nbsp;</span>
811
+ <span class="cline-any cline-neutral">&nbsp;</span>
812
+ <span class="cline-any cline-neutral">&nbsp;</span>
813
+ <span class="cline-any cline-no">&nbsp;</span>
814
+ <span class="cline-any cline-no">&nbsp;</span>
815
+ <span class="cline-any cline-neutral">&nbsp;</span>
816
+ <span class="cline-any cline-no">&nbsp;</span>
817
+ <span class="cline-any cline-no">&nbsp;</span>
818
+ <span class="cline-any cline-neutral">&nbsp;</span>
819
+ <span class="cline-any cline-no">&nbsp;</span>
820
+ <span class="cline-any cline-no">&nbsp;</span>
821
+ <span class="cline-any cline-neutral">&nbsp;</span>
822
+ <span class="cline-any cline-no">&nbsp;</span>
823
+ <span class="cline-any cline-no">&nbsp;</span>
824
+ <span class="cline-any cline-neutral">&nbsp;</span>
825
+ <span class="cline-any cline-no">&nbsp;</span>
826
+ <span class="cline-any cline-no">&nbsp;</span>
827
+ <span class="cline-any cline-no">&nbsp;</span>
828
+ <span class="cline-any cline-neutral">&nbsp;</span>
829
+ <span class="cline-any cline-neutral">&nbsp;</span>
830
+ <span class="cline-any cline-neutral">&nbsp;</span>
831
+ <span class="cline-any cline-neutral">&nbsp;</span>
832
+ <span class="cline-any cline-no">&nbsp;</span>
833
+ <span class="cline-any cline-neutral">&nbsp;</span>
834
+ <span class="cline-any cline-no">&nbsp;</span>
835
+ <span class="cline-any cline-no">&nbsp;</span>
836
+ <span class="cline-any cline-neutral">&nbsp;</span>
837
+ <span class="cline-any cline-no">&nbsp;</span>
838
+ <span class="cline-any cline-neutral">&nbsp;</span>
839
+ <span class="cline-any cline-neutral">&nbsp;</span>
840
+ <span class="cline-any cline-neutral">&nbsp;</span>
841
+ <span class="cline-any cline-neutral">&nbsp;</span>
842
+ <span class="cline-any cline-no">&nbsp;</span>
843
+ <span class="cline-any cline-no">&nbsp;</span>
844
+ <span class="cline-any cline-neutral">&nbsp;</span>
845
+ <span class="cline-any cline-neutral">&nbsp;</span>
846
+ <span class="cline-any cline-no">&nbsp;</span>
847
+ <span class="cline-any cline-neutral">&nbsp;</span>
848
+ <span class="cline-any cline-neutral">&nbsp;</span>
849
+ <span class="cline-any cline-neutral">&nbsp;</span>
850
+ <span class="cline-any cline-neutral">&nbsp;</span>
851
+ <span class="cline-any cline-yes">1x</span>
852
+ <span class="cline-any cline-yes">8x</span>
853
+ <span class="cline-any cline-neutral">&nbsp;</span>
854
+ <span class="cline-any cline-neutral">&nbsp;</span>
855
+ <span class="cline-any cline-yes">6x</span>
856
+ <span class="cline-any cline-neutral">&nbsp;</span>
857
+ <span class="cline-any cline-neutral">&nbsp;</span>
858
+ <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-neutral">&nbsp;</span>
860
+ <span class="cline-any cline-yes">6x</span>
861
+ <span class="cline-any cline-neutral">&nbsp;</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-neutral">&nbsp;</span>
864
+ <span class="cline-any cline-neutral">&nbsp;</span>
865
+ <span class="cline-any cline-yes">30x</span>
866
+ <span class="cline-any cline-neutral">&nbsp;</span>
867
+ <span class="cline-any cline-neutral">&nbsp;</span>
868
+ <span class="cline-any cline-neutral">&nbsp;</span>
869
+ <span class="cline-any cline-neutral">&nbsp;</span>
870
+ <span class="cline-any cline-yes">1x</span>
871
+ <span class="cline-any cline-neutral">&nbsp;</span>
872
+ <span class="cline-any cline-neutral">&nbsp;</span>
873
+ <span class="cline-any cline-neutral">&nbsp;</span>
874
+ <span class="cline-any cline-neutral">&nbsp;</span>
875
+ <span class="cline-any cline-yes">1x</span>
876
+ <span class="cline-any cline-neutral">&nbsp;</span>
877
+ <span class="cline-any cline-yes">1x</span>
878
+ <span class="cline-any cline-neutral">&nbsp;</span>
879
+ <span class="cline-any cline-neutral">&nbsp;</span>
880
+ <span class="cline-any cline-neutral">&nbsp;</span>
881
+ <span class="cline-any cline-neutral">&nbsp;</span>
882
+ <span class="cline-any cline-yes">1x</span>
883
+ <span class="cline-any cline-neutral">&nbsp;</span>
884
+ <span class="cline-any cline-neutral">&nbsp;</span>
885
+ <span class="cline-any cline-yes">1x</span>
886
+ <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-neutral">&nbsp;</span>
888
+ <span class="cline-any cline-neutral">&nbsp;</span>
889
+ <span class="cline-any cline-neutral">&nbsp;</span>
890
+ <span class="cline-any cline-neutral">&nbsp;</span>
891
+ <span class="cline-any cline-yes">1x</span>
892
+ <span class="cline-any cline-neutral">&nbsp;</span>
893
+ <span class="cline-any cline-neutral">&nbsp;</span>
894
+ <span class="cline-any cline-yes">1x</span>
895
+ <span class="cline-any cline-neutral">&nbsp;</span>
896
+ <span class="cline-any cline-neutral">&nbsp;</span>
897
+ <span class="cline-any cline-neutral">&nbsp;</span>
898
+ <span class="cline-any cline-neutral">&nbsp;</span>
899
+ <span class="cline-any cline-neutral">&nbsp;</span>
900
+ <span class="cline-any cline-yes">1x</span>
901
+ <span class="cline-any cline-neutral">&nbsp;</span>
902
+ <span class="cline-any cline-neutral">&nbsp;</span>
903
+ <span class="cline-any cline-yes">1x</span>
904
+ <span class="cline-any cline-neutral">&nbsp;</span>
905
+ <span class="cline-any cline-neutral">&nbsp;</span>
906
+ <span class="cline-any cline-neutral">&nbsp;</span>
907
+ <span class="cline-any cline-neutral">&nbsp;</span>
908
+ <span class="cline-any cline-neutral">&nbsp;</span>
909
+ <span class="cline-any cline-neutral">&nbsp;</span>
910
+ <span class="cline-any cline-yes">1x</span>
911
+ <span class="cline-any cline-neutral">&nbsp;</span>
912
+ <span class="cline-any cline-neutral">&nbsp;</span>
913
+ <span class="cline-any cline-neutral">&nbsp;</span>
914
+ <span class="cline-any cline-neutral">&nbsp;</span>
915
+ <span class="cline-any cline-neutral">&nbsp;</span>
916
+ <span class="cline-any cline-neutral">&nbsp;</span>
917
+ <span class="cline-any cline-neutral">&nbsp;</span>
918
+ <span class="cline-any cline-neutral">&nbsp;</span>
919
+ <span class="cline-any cline-neutral">&nbsp;</span>
920
+ <span class="cline-any cline-neutral">&nbsp;</span>
921
+ <span class="cline-any cline-neutral">&nbsp;</span>
922
+ <span class="cline-any cline-neutral">&nbsp;</span>
923
+ <span class="cline-any cline-neutral">&nbsp;</span>
924
+ <span class="cline-any cline-neutral">&nbsp;</span>
925
+ <span class="cline-any cline-neutral">&nbsp;</span>
926
+ <span class="cline-any cline-neutral">&nbsp;</span>
927
+ <span class="cline-any cline-neutral">&nbsp;</span>
928
+ <span class="cline-any cline-neutral">&nbsp;</span>
929
+ <span class="cline-any cline-neutral">&nbsp;</span>
930
+ <span class="cline-any cline-neutral">&nbsp;</span>
931
+ <span class="cline-any cline-neutral">&nbsp;</span>
932
+ <span class="cline-any cline-neutral">&nbsp;</span>
933
+ <span class="cline-any cline-neutral">&nbsp;</span>
934
+ <span class="cline-any cline-neutral">&nbsp;</span>
935
+ <span class="cline-any cline-neutral">&nbsp;</span>
936
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { F64 } from '@node-dlc/bufio';
937
+ &nbsp;
938
+ // Field transformation options (similar to serde attributes)
939
+ export interface SerdeFieldOptions {
940
+ rename?: string; // For mapping different field names
941
+ aliases?: string[]; // For handling multiple field name variations during deserialization
942
+ transform?: {
943
+ serialize?: (value: any) =&gt; any;
944
+ deserialize?: (value: any) =&gt; any;
945
+ };
946
+ optional?: boolean;
947
+ type?:
948
+ | 'hex'
949
+ | 'bigint'
950
+ | 'f64'
951
+ | 'buffer'
952
+ | 'array'
953
+ | 'object'
954
+ | 'der_signature';
955
+ itemType?: string; // For arrays of complex objects
956
+ }
957
+ &nbsp;
958
+ // Utility functions similar to Rust serde helpers
959
+ export class SerdeHelpers {
960
+ // Equivalent to serialize_hex helper in Rust
961
+ <span class="fstat-no" title="function not covered" > static </span>serializeHex(value: Buffer): string {
962
+ <span class="cstat-no" title="statement not covered" > return value.toString('hex');</span>
963
+ }
964
+ &nbsp;
965
+ // Equivalent to deserialize_hex_string helper in Rust
966
+ <span class="fstat-no" title="function not covered" > static </span>deserializeHex(value: string): Buffer {
967
+ <span class="cstat-no" title="statement not covered" > return Buffer.from(value, 'hex');</span>
968
+ }
969
+ &nbsp;
970
+ // Safe BigInt conversion (handles json-bigint compatibility)
971
+ static toBigInt(value: any): bigint {
972
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (value === null || value === undefined) <span class="cstat-no" title="statement not covered" >return BigInt(0);</span>
973
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof value === 'bigint') <span class="cstat-no" title="statement not covered" >return value;</span>
974
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (typeof value === 'string') <span class="cstat-no" title="statement not covered" >return BigInt(value);</span>
975
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof value === 'number') return BigInt(value);
976
+ <span class="cstat-no" title="statement not covered" > return BigInt(0);</span>
977
+ }
978
+ &nbsp;
979
+ // Safe BigInt to number conversion (preserves precision)
980
+ static bigIntToNumber(value: bigint): number {
981
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (
982
+ value &lt;= BigInt(Number.MAX_SAFE_INTEGER) &amp;&amp;
983
+ value &gt;= BigInt(Number.MIN_SAFE_INTEGER)
984
+ ) {
985
+ return Number(value);
986
+ }
987
+ // For larger values, preserve as BigInt (json-bigint will handle serialization)
988
+ <span class="cstat-no" title="statement not covered" > return value as any;</span>
989
+ }
990
+ &nbsp;
991
+ // F64 parsing (handles string/number precision issues)
992
+ static parseF64(value: any): F64 | null {
993
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (value === null || value === undefined) <span class="cstat-no" title="statement not covered" >return null;</span>
994
+ &nbsp;
995
+ try {
996
+ if (typeof value === 'string') {
997
+ try {
998
+ return F64.fromString(value);
999
+ } catch {
1000
+ const numValue = <span class="cstat-no" title="statement not covered" >parseFloat(value);</span>
1001
+ <span class="cstat-no" title="statement not covered" > if (!isNaN(numValue) &amp;&amp; isFinite(numValue)) {</span>
1002
+ <span class="cstat-no" title="statement not covered" > return F64.fromNumber(numValue);</span>
1003
+ }
1004
+ }
1005
+ } else <span class="missing-if-branch" title="else path not taken" >E</span>if (typeof value === 'number') {
1006
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!isFinite(value)) <span class="cstat-no" title="statement not covered" >return null;</span>
1007
+ return F64.fromNumber(value);
1008
+ }
1009
+ &nbsp;
1010
+ const numValue = <span class="cstat-no" title="statement not covered" >Number(value);</span>
1011
+ <span class="cstat-no" title="statement not covered" > if (!isNaN(numValue) &amp;&amp; isFinite(numValue)) {</span>
1012
+ <span class="cstat-no" title="statement not covered" > return F64.fromNumber(numValue);</span>
1013
+ }
1014
+ <span class="cstat-no" title="statement not covered" > return null;</span>
1015
+ } catch {
1016
+ <span class="cstat-no" title="statement not covered" > return null;</span>
1017
+ }
1018
+ }
1019
+ &nbsp;
1020
+ // F64 serialization to number or string based on precision needs
1021
+ <span class="fstat-no" title="function not covered" > static </span>serializeF64(value: F64): number | string {
1022
+ <span class="cstat-no" title="statement not covered" > try {</span>
1023
+ const numValue = <span class="cstat-no" title="statement not covered" >value.toNumber();</span>
1024
+ // If we can represent it as a safe number, do so
1025
+ <span class="cstat-no" title="statement not covered" > if (Number.isSafeInteger(numValue) || Math.abs(numValue) &lt; 1e15) {</span>
1026
+ <span class="cstat-no" title="statement not covered" > return numValue;</span>
1027
+ }
1028
+ // Otherwise, use string representation for precision
1029
+ <span class="cstat-no" title="statement not covered" > return value.toString();</span>
1030
+ } catch {
1031
+ <span class="cstat-no" title="statement not covered" > return value.toString();</span>
1032
+ }
1033
+ }
1034
+ &nbsp;
1035
+ // Field name resolution with aliases (handles snake_case/camelCase variations)
1036
+ static resolveFieldValue(
1037
+ json: any,
1038
+ fieldName: string,
1039
+ aliases: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[],</span>
1040
+ ): any {
1041
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (json[fieldName] !== undefined) return json[fieldName];
1042
+ &nbsp;
1043
+ <span class="cstat-no" title="statement not covered" > for (const alias of aliases) {</span>
1044
+ <span class="cstat-no" title="statement not covered" > if (json[alias] !== undefined) <span class="cstat-no" title="statement not covered" >return json[alias];</span></span>
1045
+ }
1046
+ &nbsp;
1047
+ <span class="cstat-no" title="statement not covered" > return undefined;</span>
1048
+ }
1049
+ &nbsp;
1050
+ // Convert field name based on naming convention
1051
+ static convertFieldName(
1052
+ fieldName: string,
1053
+ convention: 'camelCase' | 'snake_case',
1054
+ ): string {
1055
+ switch (convention) {
1056
+ case 'snake_case':
1057
+ return fieldName.replace(
1058
+ /[A-Z]/g,
1059
+ <span class="fstat-no" title="function not covered" > (l</span>etter) =&gt; <span class="cstat-no" title="statement not covered" >`_${letter.toLowerCase()}`,</span>
1060
+ );
1061
+ <span class="branch-1 cbranch-no" title="branch not covered" > case 'camelCase':</span>
1062
+ <span class="branch-2 cbranch-no" title="branch not covered" > default:</span>
1063
+ <span class="cstat-no" title="statement not covered" > return fieldName;</span>
1064
+ }
1065
+ }
1066
+ &nbsp;
1067
+ // Parse DER signature to raw format (common pattern in DLC messages)
1068
+ <span class="fstat-no" title="function not covered" > static </span>parseDerSignature(hexSig: string): Buffer {
1069
+ const sigBuffer = <span class="cstat-no" title="statement not covered" >Buffer.from(hexSig, 'hex');</span>
1070
+ &nbsp;
1071
+ <span class="cstat-no" title="statement not covered" > if (sigBuffer.length === 64) {</span>
1072
+ <span class="cstat-no" title="statement not covered" > return sigBuffer; </span>// Already raw format
1073
+ }
1074
+ &nbsp;
1075
+ <span class="cstat-no" title="statement not covered" > try {</span>
1076
+ // Import secp256k1 dynamically to avoid circular dependencies
1077
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
1078
+ const secp256k1 = <span class="cstat-no" title="statement not covered" >require('secp256k1');</span>
1079
+ const rawSig = <span class="cstat-no" title="statement not covered" >secp256k1.signatureImport(sigBuffer);</span>
1080
+ <span class="cstat-no" title="statement not covered" > return Buffer.from(rawSig);</span>
1081
+ } catch (ex) {
1082
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Invalid DER signature: ${(ex as Error).message}`);</span>
1083
+ }
1084
+ }
1085
+ &nbsp;
1086
+ // Convert raw signature to DER format (for canonical JSON output)
1087
+ <span class="fstat-no" title="function not covered" > static </span>serializeDerSignature(rawSig: Buffer): string {
1088
+ <span class="cstat-no" title="statement not covered" > try {</span>
1089
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
1090
+ const secp256k1 = <span class="cstat-no" title="statement not covered" >require('secp256k1');</span>
1091
+ const derSig = <span class="cstat-no" title="statement not covered" >secp256k1.signatureExport(rawSig);</span>
1092
+ <span class="cstat-no" title="statement not covered" > return Buffer.from(derSig).toString('hex');</span>
1093
+ } catch (ex) {
1094
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Invalid raw signature: ${(ex as Error).message}`);</span>
1095
+ }
1096
+ }
1097
+ &nbsp;
1098
+ // Get standard field aliases for a field name (handles common variations)
1099
+ static getStandardAliases(fieldName: string): string[] {
1100
+ const aliases: string[] = [];
1101
+ &nbsp;
1102
+ // Add snake_case variant
1103
+ aliases.push(SerdeHelpers.convertFieldName(fieldName, 'snake_case'));
1104
+ &nbsp;
1105
+ // Handle specific common DLC field variations
1106
+ const fieldVariations: Record&lt;string, string[]&gt; = {
1107
+ fundingPubkey: ['fundingPubKey', 'funding_pubkey'],
1108
+ payoutSpk: ['payoutSPK', 'payout_spk'],
1109
+ changeSpk: ['changeSPK', 'change_spk'],
1110
+ offerCollateral: ['offerCollateralSatoshis', 'offer_collateral'],
1111
+ acceptCollateral: ['acceptCollateralSatoshis', 'accept_collateral'],
1112
+ temporaryContractId: ['temporary_contract_id'],
1113
+ contractFlags: ['contract_flags'],
1114
+ chainHash: ['chain_hash'],
1115
+ contractInfo: ['contract_info'],
1116
+ fundingInputs: ['funding_inputs'],
1117
+ payoutSerialId: ['payout_serial_id'],
1118
+ changeSerialId: ['change_serial_id'],
1119
+ fundOutputSerialId: ['fund_output_serial_id'],
1120
+ feeRatePerVb: ['fee_rate_per_vb'],
1121
+ cetLocktime: ['cet_locktime'],
1122
+ refundLocktime: ['refund_locktime'],
1123
+ refundSignature: ['refund_signature'],
1124
+ cetAdaptorSignatures: ['cet_adaptor_signatures'],
1125
+ negotiationFields: ['negotiation_fields'],
1126
+ };
1127
+ &nbsp;
1128
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (fieldVariations[fieldName]) {
1129
+ <span class="cstat-no" title="statement not covered" > aliases.push(...fieldVariations[fieldName]);</span>
1130
+ }
1131
+ &nbsp;
1132
+ return aliases;
1133
+ }
1134
+ }
1135
+ &nbsp;
1136
+ // Field mapping configuration type
1137
+ export interface FieldMapping {
1138
+ [propertyName: string]: SerdeFieldOptions;
1139
+ }
1140
+ &nbsp;
1141
+ // Base class that provides standardized fromJSON and toJSON using explicit field mappings
1142
+ export abstract class SerdeBase {
1143
+ // Abstract method that subclasses must implement to define their field mappings
1144
+ protected abstract getFieldMappings(): FieldMapping;
1145
+ &nbsp;
1146
+ // Generic fromJSON that uses field mappings for deserialization
1147
+ public static fromJSONWithMapping&lt;T extends SerdeBase&gt;(
1148
+ json: any,
1149
+ instance: T,
1150
+ fieldMappings: FieldMapping,
1151
+ ): T {
1152
+ for (const [propKey, options] of Object.entries(fieldMappings)) {
1153
+ let aliases = options.aliases || <span class="branch-1 cbranch-no" title="branch not covered" >[];</span>
1154
+ &nbsp;
1155
+ // Add standard aliases if not explicitly provided
1156
+ if (aliases.length === 0) {
1157
+ aliases = SerdeHelpers.getStandardAliases(propKey);
1158
+ }
1159
+ &nbsp;
1160
+ // Add renamed field name
1161
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (options.rename) {
1162
+ <span class="cstat-no" title="statement not covered" > aliases.unshift(options.rename);</span>
1163
+ }
1164
+ &nbsp;
1165
+ const value = SerdeHelpers.resolveFieldValue(json, propKey, aliases);
1166
+ &nbsp;
1167
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (value === undefined &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >!options.optional)</span> {
1168
+ <span class="cstat-no" title="statement not covered" > if (options.type === 'bigint') {</span>
1169
+ (<span class="cstat-no" title="statement not covered" >instance as any)[propKey] = BigInt(0);</span>
1170
+ <span class="cstat-no" title="statement not covered" > continue;</span>
1171
+ }
1172
+ }
1173
+ &nbsp;
1174
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (value !== undefined) {
1175
+ let transformedValue = value;
1176
+ &nbsp;
1177
+ // Apply custom deserialize transformation first
1178
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (options.transform?.deserialize) {
1179
+ <span class="cstat-no" title="statement not covered" > transformedValue = options.transform.deserialize(value);</span>
1180
+ }
1181
+ // Apply type-specific transformations
1182
+ else if (options.type) {
1183
+ switch (options.type) {
1184
+ <span class="branch-0 cbranch-no" title="branch not covered" > case 'hex':</span>
1185
+ <span class="cstat-no" title="statement not covered" > transformedValue = SerdeHelpers.deserializeHex(value);</span>
1186
+ <span class="cstat-no" title="statement not covered" > break;</span>
1187
+ <span class="branch-1 cbranch-no" title="branch not covered" > case 'bigint':</span>
1188
+ <span class="cstat-no" title="statement not covered" > transformedValue = SerdeHelpers.toBigInt(value);</span>
1189
+ <span class="cstat-no" title="statement not covered" > break;</span>
1190
+ case 'f64':
1191
+ transformedValue = SerdeHelpers.parseF64(value);
1192
+ break;
1193
+ <span class="branch-3 cbranch-no" title="branch not covered" > case 'buffer':</span>
1194
+ <span class="cstat-no" title="statement not covered" > transformedValue = Buffer.from(value, 'hex');</span>
1195
+ <span class="cstat-no" title="statement not covered" > break;</span>
1196
+ <span class="branch-4 cbranch-no" title="branch not covered" > case 'der_signature':</span>
1197
+ <span class="cstat-no" title="statement not covered" > transformedValue = SerdeHelpers.parseDerSignature(value);</span>
1198
+ <span class="cstat-no" title="statement not covered" > break;</span>
1199
+ <span class="branch-5 cbranch-no" title="branch not covered" > case 'array':</span>
1200
+ // Handle arrays with specific item types
1201
+ <span class="cstat-no" title="statement not covered" > if (Array.isArray(value)) {</span>
1202
+ <span class="cstat-no" title="statement not covered" > transformedValue = value.map(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; {</span>
1203
+ <span class="cstat-no" title="statement not covered" > if (options.itemType &amp;&amp; item.fromJSON) {</span>
1204
+ // Use the class's fromJSON method if available
1205
+ <span class="cstat-no" title="statement not covered" > return item.fromJSON ? item.fromJSON(item) : item;</span>
1206
+ }
1207
+ <span class="cstat-no" title="statement not covered" > return item;</span>
1208
+ });
1209
+ }
1210
+ <span class="cstat-no" title="statement not covered" > break;</span>
1211
+ <span class="branch-6 cbranch-no" title="branch not covered" > case 'object':</span>
1212
+ // For complex objects, try to use their fromJSON if available
1213
+ <span class="cstat-no" title="statement not covered" > if (value &amp;&amp; typeof value === 'object' &amp;&amp; options.itemType) {</span>
1214
+ // Dynamic import of the class and call fromJSON
1215
+ <span class="cstat-no" title="statement not covered" > transformedValue = value;</span>
1216
+ }
1217
+ <span class="cstat-no" title="statement not covered" > break;</span>
1218
+ }
1219
+ }
1220
+ &nbsp;
1221
+ (instance as any)[propKey] = transformedValue;
1222
+ }
1223
+ }
1224
+ &nbsp;
1225
+ return instance;
1226
+ }
1227
+ &nbsp;
1228
+ // Generic toJSON using field mappings for serialization
1229
+ <span class="fstat-no" title="function not covered" > toJSON(</span>): any {
1230
+ const result: any = <span class="cstat-no" title="statement not covered" >{};</span>
1231
+ const fieldMappings = <span class="cstat-no" title="statement not covered" >this.getFieldMappings();</span>
1232
+ &nbsp;
1233
+ <span class="cstat-no" title="statement not covered" > for (const [propKey, options] of Object.entries(fieldMappings)) {</span>
1234
+ const value = (<span class="cstat-no" title="statement not covered" >this as any)[propKey];</span>
1235
+ &nbsp;
1236
+ <span class="cstat-no" title="statement not covered" > if (value === undefined &amp;&amp; options.optional) {</span>
1237
+ <span class="cstat-no" title="statement not covered" > continue; </span>// Skip optional undefined fields
1238
+ }
1239
+ &nbsp;
1240
+ let serializedValue = <span class="cstat-no" title="statement not covered" >value;</span>
1241
+ &nbsp;
1242
+ // Apply custom serialize transformation first
1243
+ <span class="cstat-no" title="statement not covered" > if (options.transform?.serialize) {</span>
1244
+ <span class="cstat-no" title="statement not covered" > serializedValue = options.transform.serialize(value);</span>
1245
+ }
1246
+ // Apply type-specific transformations
1247
+ else <span class="cstat-no" title="statement not covered" >if (options.type &amp;&amp; value !== undefined &amp;&amp; value !== null) {</span>
1248
+ <span class="cstat-no" title="statement not covered" > switch (options.type) {</span>
1249
+ case 'hex':
1250
+ case 'buffer':
1251
+ <span class="cstat-no" title="statement not covered" > serializedValue = SerdeHelpers.serializeHex(value);</span>
1252
+ <span class="cstat-no" title="statement not covered" > break;</span>
1253
+ case 'bigint':
1254
+ <span class="cstat-no" title="statement not covered" > serializedValue = SerdeHelpers.bigIntToNumber(value);</span>
1255
+ <span class="cstat-no" title="statement not covered" > break;</span>
1256
+ case 'f64':
1257
+ <span class="cstat-no" title="statement not covered" > serializedValue = SerdeHelpers.serializeF64(value);</span>
1258
+ <span class="cstat-no" title="statement not covered" > break;</span>
1259
+ case 'der_signature':
1260
+ <span class="cstat-no" title="statement not covered" > serializedValue = SerdeHelpers.serializeDerSignature(value);</span>
1261
+ <span class="cstat-no" title="statement not covered" > break;</span>
1262
+ case 'array':
1263
+ <span class="cstat-no" title="statement not covered" > if (Array.isArray(value)) {</span>
1264
+ <span class="cstat-no" title="statement not covered" > serializedValue = value.map(<span class="fstat-no" title="function not covered" >(i</span>tem: any) =&gt; {</span>
1265
+ <span class="cstat-no" title="statement not covered" > return item &amp;&amp; typeof item.toJSON === 'function'</span>
1266
+ ? item.toJSON()
1267
+ : item;
1268
+ });
1269
+ }
1270
+ <span class="cstat-no" title="statement not covered" > break;</span>
1271
+ case 'object':
1272
+ <span class="cstat-no" title="statement not covered" > if (value &amp;&amp; typeof value.toJSON === 'function') {</span>
1273
+ <span class="cstat-no" title="statement not covered" > serializedValue = value.toJSON();</span>
1274
+ }
1275
+ <span class="cstat-no" title="statement not covered" > break;</span>
1276
+ }
1277
+ }
1278
+ &nbsp;
1279
+ // Use renamed field name if specified, otherwise use original property name
1280
+ const fieldName = <span class="cstat-no" title="statement not covered" >options.rename || propKey;</span>
1281
+ <span class="cstat-no" title="statement not covered" > result[fieldName] = serializedValue;</span>
1282
+ }
1283
+ &nbsp;
1284
+ <span class="cstat-no" title="statement not covered" > return result;</span>
1285
+ }
1286
+ }
1287
+ &nbsp;
1288
+ // Helper functions for creating field configurations (similar to decorators)
1289
+ export const field = (options: SerdeFieldOptions = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span>: SerdeFieldOptions =&gt;
1290
+ options;
1291
+ &nbsp;
1292
+ // Common field type helpers
1293
+ export const HexField = (aliases: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[])</span>: SerdeFieldOptions =&gt; ({
1294
+ type: 'hex',
1295
+ aliases,
1296
+ });
1297
+ &nbsp;
1298
+ export const BigIntField = (aliases: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[])</span>: SerdeFieldOptions =&gt; ({
1299
+ type: 'bigint',
1300
+ aliases,
1301
+ });
1302
+ &nbsp;
1303
+ export const F64Field = (aliases: string[] = []): SerdeFieldOptions =&gt; ({
1304
+ type: 'f64',
1305
+ aliases,
1306
+ });
1307
+ &nbsp;
1308
+ export const BufferField = <span class="fstat-no" title="function not covered" >(a</span>liases: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[])</span>: SerdeFieldOptions =&gt; (<span class="cstat-no" title="statement not covered" >{</span>
1309
+ type: 'buffer',
1310
+ aliases,
1311
+ });
1312
+ &nbsp;
1313
+ export const DerSignatureField = (
1314
+ aliases: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[],</span>
1315
+ ): SerdeFieldOptions =&gt; ({
1316
+ type: 'der_signature',
1317
+ aliases,
1318
+ });
1319
+ &nbsp;
1320
+ export const ArrayField = (
1321
+ itemType?: string,
1322
+ aliases: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[],</span>
1323
+ ): SerdeFieldOptions =&gt; ({
1324
+ type: 'array',
1325
+ itemType,
1326
+ aliases,
1327
+ });
1328
+ &nbsp;
1329
+ export const ObjectField = (
1330
+ itemType?: string,
1331
+ aliases: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[],</span>
1332
+ ): SerdeFieldOptions =&gt; ({
1333
+ type: 'object',
1334
+ itemType,
1335
+ aliases,
1336
+ });
1337
+ &nbsp;
1338
+ export const OptionalField = (
1339
+ type: SerdeFieldOptions['type'],
1340
+ aliases: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[],</span>
1341
+ ): SerdeFieldOptions =&gt; ({
1342
+ type,
1343
+ optional: true,
1344
+ aliases,
1345
+ });
1346
+ &nbsp;
1347
+ // Common DLC field configurations
1348
+ export const DlcFields = {
1349
+ protocolVersion: field({ type: 'bigint', aliases: ['protocol_version'] }),
1350
+ temporaryContractId: HexField(['temporary_contract_id']),
1351
+ contractFlags: HexField(['contract_flags']),
1352
+ chainHash: HexField(['chain_hash']),
1353
+ fundingPubkey: HexField(['fundingPubKey', 'funding_pubkey']),
1354
+ payoutSpk: HexField(['payoutSPK', 'payout_spk']),
1355
+ changeSpk: HexField(['changeSPK', 'change_spk']),
1356
+ payoutSerialId: BigIntField(['payout_serial_id']),
1357
+ changeSerialId: BigIntField(['change_serial_id']),
1358
+ fundOutputSerialId: BigIntField(['fund_output_serial_id']),
1359
+ feeRatePerVb: BigIntField(['fee_rate_per_vb']),
1360
+ cetLocktime: field({ aliases: ['cet_locktime'] }),
1361
+ refundLocktime: field({ aliases: ['refund_locktime'] }),
1362
+ offerCollateral: BigIntField(['offerCollateralSatoshis', 'offer_collateral']),
1363
+ acceptCollateral: BigIntField([
1364
+ 'acceptCollateralSatoshis',
1365
+ 'accept_collateral',
1366
+ ]),
1367
+ refundSignature: DerSignatureField(['refund_signature']),
1368
+ fundingInputs: ArrayField('FundingInput', ['funding_inputs']),
1369
+ cetAdaptorSignatures: ObjectField('CetAdaptorSignatures', [
1370
+ 'cet_adaptor_signatures',
1371
+ ]),
1372
+ negotiationFields: OptionalField('object', ['negotiation_fields']),
1373
+ };
1374
+ &nbsp;</pre></td></tr></table></pre>
1375
+
1376
+ <div class='push'></div><!-- for sticky footer -->
1377
+ </div><!-- /wrapper -->
1378
+ <div class='footer quiet pad2 space-top1 center small'>
1379
+ Code coverage generated by
1380
+ <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1381
+ at Sun Jun 22 2025 13:46:15 GMT-0700 (Pacific Daylight Saving Time)
1382
+ </div>
1383
+ </div>
1384
+ <script src="../../prettify.js"></script>
1385
+ <script>
1386
+ window.onload = function () {
1387
+ prettyPrint();
1388
+ };
1389
+ </script>
1390
+ <script src="../../sorter.js"></script>
1391
+ <script src="../../block-navigation.js"></script>
1392
+ </body>
1393
+ </html>
1394
+