@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.
- package/.nvmrc +1 -1
- package/.yalc/@node-dlc/messaging/.nyc_output/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
- package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
- package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/index.json +1 -0
- package/.yalc/@node-dlc/messaging/README.md +24 -0
- package/.yalc/@node-dlc/messaging/__tests__/_test-utils.ts +12 -0
- package/.yalc/@node-dlc/messaging/__tests__/chain/ChainManager.spec.ts +178 -0
- package/.yalc/@node-dlc/messaging/__tests__/compatibility/dlcspecs-compatibility.spec.ts +473 -0
- package/.yalc/@node-dlc/messaging/__tests__/compatibility/rust-dlc-cross-language.spec.ts +342 -0
- package/.yalc/@node-dlc/messaging/__tests__/compatibility/true-serialization-compatibility.spec.ts +611 -0
- package/.yalc/@node-dlc/messaging/__tests__/dlc_message_test.json +155 -0
- package/.yalc/@node-dlc/messaging/__tests__/irc/IrcMessage.spec.ts +94 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/AddressCache.spec.ts +79 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/BatchFundingGroup.spec.ts +72 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/CetAdaptorSignatures.spec.ts +57 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/ContractDescriptor.spec.ts +264 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/ContractInfo.spec.ts +419 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DigitDecompositionEventDescriptor.spec.ts +59 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcAccept.spec.ts +242 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcCancel.spec.ts +42 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcClose.spec.ts +315 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcOffer.spec.ts +527 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcSign.spec.ts +118 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/DlcTransactions.spec.ts +157 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/EnumEventDescriptor.spec.ts +50 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/EventDescriptor.spec.ts +93 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/FundingInput.spec.ts +84 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/FundingSignatures.spec.ts +83 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/NegotiationFields.spec.ts +328 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/NodeAnnouncementMessage.spec.ts +115 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAnnouncement.spec.ts +415 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAttestation.spec.ts +326 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEvent.spec.ts +143 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEventContainer.spec.ts +95 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleIdentifier.spec.ts +48 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OracleInfo.spec.ts +116 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OrderAccept.spec.ts +77 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OrderNegotiationFields.spec.ts +216 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OrderOffer.spec.ts +121 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/OrderPositionInfo.spec.ts +75 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutCurvePiece.spec.ts +220 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutFunction.spec.ts +101 -0
- package/.yalc/@node-dlc/messaging/__tests__/messages/RoundingIntervals.spec.ts +75 -0
- package/.yalc/@node-dlc/messaging/__tests__/serialize/F64.spec.ts +260 -0
- package/.yalc/@node-dlc/messaging/__tests__/tsconfig.json +8 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/base.css +224 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/block-navigation.js +79 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/favicon.png +0 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/index.html +201 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/MessageType.ts.html +494 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainManager.ts.html +1058 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainMemoryStore.ts.html +182 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/index.html +126 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/Address.ts.html +272 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/index.html +111 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.html +141 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.ts.html +212 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/IrcMessage.ts.html +563 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/index.html +111 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/AddressCache.ts.html +302 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/BatchFundingGroup.ts.html +503 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignatures.ts.html +347 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignaturesV0.ts.html +347 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractDescriptor.ts.html +1040 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractInfo.ts.html +1382 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcAccept.ts.html +1865 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCancel.ts.html +251 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcClose.ts.html +986 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCloseMetadata.ts.html +443 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcIds.ts.html +281 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInfo.ts.html +323 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcMessage.ts.html +341 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcOffer.ts.html +1895 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcSign.ts.html +1142 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcTransactions.ts.html +719 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/EventDescriptor.ts.html +947 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingInput.ts.html +728 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignatures.ts.html +374 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignaturesV0.ts.html +374 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NegotiationFields.ts.html +836 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NodeAnnouncementMessage.ts.html +515 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncement.ts.html +608 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncementV0.ts.html +605 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestation.ts.html +956 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestationV0.ts.html +770 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEvent.ts.html +830 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainer.ts.html +347 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainerV0.ts.html +347 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventV0.ts.html +827 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifier.ts.html +314 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifierV0.ts.html +314 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfo.ts.html +1637 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfoV0.ts.html +1631 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderAccept.ts.html +557 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderIrcInfo.ts.html +380 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderMetadata.ts.html +437 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderNegotiationFields.ts.html +551 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderOffer.ts.html +1337 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderPositionInfo.ts.html +590 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutCurvePiece.ts.html +1427 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutFunction.ts.html +800 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervals.ts.html +461 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervalsV0.ts.html +482 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ScriptWitnessV0.ts.html +269 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/index.html +636 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/SerdeUtils.ts.html +1394 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/index.html +111 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/F64.ts.html +1136 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/deserializeTlv.ts.html +125 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/getTlv.ts.html +143 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/index.html +141 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/util.ts.html +179 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/index.html +111 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/validate.ts.html +182 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.css +1 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.js +2 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov-report/sorter.js +170 -0
- package/.yalc/@node-dlc/messaging/coverage/lcov.info +5394 -0
- package/.yalc/@node-dlc/messaging/dist/MessageType.d.ts +100 -0
- package/.yalc/@node-dlc/messaging/dist/MessageType.js +117 -0
- package/.yalc/@node-dlc/messaging/dist/MessageType.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.d.ts +50 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js +211 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.d.ts +14 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js +28 -0
- package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.d.ts +11 -0
- package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js +3 -0
- package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.d.ts +48 -0
- package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js +3 -0
- package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/domain/Address.d.ts +24 -0
- package/.yalc/@node-dlc/messaging/dist/domain/Address.js +46 -0
- package/.yalc/@node-dlc/messaging/dist/domain/Address.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/index.d.ts +44 -0
- package/.yalc/@node-dlc/messaging/dist/index.js +63 -0
- package/.yalc/@node-dlc/messaging/dist/index.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.d.ts +43 -0
- package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js +116 -0
- package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.d.ts +15 -0
- package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js +51 -0
- package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.d.ts +61 -0
- package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js +113 -0
- package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.d.ts +40 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js +67 -0
- package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.d.ts +122 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js +222 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.d.ts +135 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js +304 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.d.ts +145 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js +428 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.d.ts +31 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js +51 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.d.ts +68 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js +210 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.d.ts +44 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js +74 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.d.ts +26 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js +58 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.d.ts +31 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js +61 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.d.ts +23 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js +54 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.d.ts +131 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js +418 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.d.ts +96 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js +267 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.d.ts +69 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js +149 -0
- package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.d.ts +106 -0
- package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js +209 -0
- package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.d.ts +62 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js +163 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.d.ts +36 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js +78 -0
- package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.d.ts +6 -0
- package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js +3 -0
- package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.d.ts +86 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js +185 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.d.ts +57 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js +127 -0
- package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.d.ts +76 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js +131 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.d.ts +68 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js +239 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.d.ts +90 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js +189 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.d.ts +32 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js +67 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.d.ts +32 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js +58 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.d.ts +32 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js +58 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.d.ts +161 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js +390 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.d.ts +161 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js +387 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.d.ts +65 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js +125 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.d.ts +42 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js +74 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.d.ts +56 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js +87 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.d.ts +69 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js +114 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.d.ts +97 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js +296 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.d.ts +50 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js +125 -0
- package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.d.ts +129 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js +327 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.d.ts +66 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js +170 -0
- package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.d.ts +52 -0
- package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js +95 -0
- package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.d.ts +29 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js +50 -0
- package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/messages/Tlv.d.ts +15 -0
- package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js +32 -0
- package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/F64.d.ts +154 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/F64.js +307 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/F64.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.d.ts +9 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js +11 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.d.ts +4 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js +23 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.d.ts +8 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js +33 -0
- package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/util.d.ts +13 -0
- package/.yalc/@node-dlc/messaging/dist/util.js +40 -0
- package/.yalc/@node-dlc/messaging/dist/util.js.map +1 -0
- package/.yalc/@node-dlc/messaging/dist/validation/validate.d.ts +4 -0
- package/.yalc/@node-dlc/messaging/dist/validation/validate.js +31 -0
- package/.yalc/@node-dlc/messaging/dist/validation/validate.js.map +1 -0
- package/.yalc/@node-dlc/messaging/lib/MessageType.ts +138 -0
- package/.yalc/@node-dlc/messaging/lib/chain/ChainManager.ts +326 -0
- package/.yalc/@node-dlc/messaging/lib/chain/ChainMemoryStore.ts +34 -0
- package/.yalc/@node-dlc/messaging/lib/chain/DlcStore.ts +11 -0
- package/.yalc/@node-dlc/messaging/lib/chain/IChainFilterChainClient.ts +57 -0
- package/.yalc/@node-dlc/messaging/lib/domain/Address.ts +64 -0
- package/.yalc/@node-dlc/messaging/lib/index.ts +44 -0
- package/.yalc/@node-dlc/messaging/lib/irc/IrcMessage.ts +161 -0
- package/.yalc/@node-dlc/messaging/lib/messages/AddressCache.ts +74 -0
- package/.yalc/@node-dlc/messaging/lib/messages/BatchFundingGroup.ts +141 -0
- package/.yalc/@node-dlc/messaging/lib/messages/CetAdaptorSignatures.ts +89 -0
- package/.yalc/@node-dlc/messaging/lib/messages/ContractDescriptor.ts +318 -0
- package/.yalc/@node-dlc/messaging/lib/messages/ContractInfo.ts +434 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcAccept.ts +595 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcCancel.ts +57 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcClose.ts +302 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcCloseMetadata.ts +121 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcIds.ts +67 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcInfo.ts +81 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcMessage.ts +87 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcOffer.ts +605 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcSign.ts +354 -0
- package/.yalc/@node-dlc/messaging/lib/messages/DlcTransactions.ts +213 -0
- package/.yalc/@node-dlc/messaging/lib/messages/EventDescriptor.ts +289 -0
- package/.yalc/@node-dlc/messaging/lib/messages/FundingInput.ts +216 -0
- package/.yalc/@node-dlc/messaging/lib/messages/FundingSignatures.ts +98 -0
- package/.yalc/@node-dlc/messaging/lib/messages/IWireMessage.ts +6 -0
- package/.yalc/@node-dlc/messaging/lib/messages/NegotiationFields.ts +252 -0
- package/.yalc/@node-dlc/messaging/lib/messages/NodeAnnouncementMessage.ts +145 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleAnnouncement.ts +176 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleAttestation.ts +292 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleEvent.ts +250 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleEventContainer.ts +89 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleIdentifier.ts +78 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OracleInfo.ts +519 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderAccept.ts +159 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderIrcInfo.ts +100 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderMetadata.ts +119 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderNegotiationFields.ts +157 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderOffer.ts +419 -0
- package/.yalc/@node-dlc/messaging/lib/messages/OrderPositionInfo.ts +170 -0
- package/.yalc/@node-dlc/messaging/lib/messages/PayoutCurvePiece.ts +449 -0
- package/.yalc/@node-dlc/messaging/lib/messages/PayoutFunction.ts +240 -0
- package/.yalc/@node-dlc/messaging/lib/messages/RoundingIntervals.ts +127 -0
- package/.yalc/@node-dlc/messaging/lib/messages/ScriptWitnessV0.ts +63 -0
- package/.yalc/@node-dlc/messaging/lib/messages/Tlv.ts +40 -0
- package/.yalc/@node-dlc/messaging/lib/serialize/F64.ts +352 -0
- package/.yalc/@node-dlc/messaging/lib/serialize/deserializeTlv.ts +15 -0
- package/.yalc/@node-dlc/messaging/lib/serialize/getTlv.ts +21 -0
- package/.yalc/@node-dlc/messaging/lib/serialize/readTlvs.ts +37 -0
- package/.yalc/@node-dlc/messaging/lib/util.ts +33 -0
- package/.yalc/@node-dlc/messaging/lib/validation/validate.ts +34 -0
- package/.yalc/@node-dlc/messaging/package.json +42 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_3_test.json +210 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_5_test.json +468 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_3_of_5_test.json +1517 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_5_of_5_test.json +545 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_3_of_5_test.json +4761 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_5_of_5_test.json +2169 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_single_oracle_test.json +164 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_hyperbola_test.json +502 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_test.json +262 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_five_oracle_numerical_with_diff_test.json +4382 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_test.json +324 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_with_diff_test.json +652 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_test.json +1138 -0
- package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_with_diff_test.json +2222 -0
- package/.yalc/@node-dlc/messaging/test_vectors/oracle/external_oracle_announcements.json +0 -0
- package/.yalc/@node-dlc/messaging/test_vectors/oracle/oracle_message_test_vectors.json +115 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/accept_msg.json +1465 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test.json +12362 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test_scripts.json +57 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_test.json +2766 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_tx_test.json +2899 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg.json +163 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg_disjoint.json +352 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_chunk_msg.json +12635 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_start_msg.json +4022 -0
- package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/sign_msg.json +383 -0
- package/.yalc/@node-dlc/messaging/tsconfig.json +7 -0
- package/.yalc/@node-dlc/messaging/yalc.sig +1 -0
- package/CHANGELOG.md +72 -0
- package/dist/BitcoinDlcProvider.d.ts +17 -16
- package/dist/BitcoinDlcProvider.js +345 -315
- package/dist/BitcoinDlcProvider.js.map +1 -1
- package/dist/utils/Utils.d.ts +6 -6
- package/dist/utils/Utils.js +4 -4
- package/dist/utils/Utils.js.map +1 -1
- package/lib/BitcoinDlcProvider.ts +624 -612
- package/lib/utils/Utils.ts +19 -24
- package/package.json +10 -10
- 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"> </span>
|
|
500
|
+
<span class="cline-any cline-neutral"> </span>
|
|
501
|
+
<span class="cline-any cline-neutral"> </span>
|
|
502
|
+
<span class="cline-any cline-neutral"> </span>
|
|
503
|
+
<span class="cline-any cline-neutral"> </span>
|
|
504
|
+
<span class="cline-any cline-neutral"> </span>
|
|
505
|
+
<span class="cline-any cline-neutral"> </span>
|
|
506
|
+
<span class="cline-any cline-neutral"> </span>
|
|
507
|
+
<span class="cline-any cline-neutral"> </span>
|
|
508
|
+
<span class="cline-any cline-neutral"> </span>
|
|
509
|
+
<span class="cline-any cline-neutral"> </span>
|
|
510
|
+
<span class="cline-any cline-neutral"> </span>
|
|
511
|
+
<span class="cline-any cline-neutral"> </span>
|
|
512
|
+
<span class="cline-any cline-neutral"> </span>
|
|
513
|
+
<span class="cline-any cline-neutral"> </span>
|
|
514
|
+
<span class="cline-any cline-neutral"> </span>
|
|
515
|
+
<span class="cline-any cline-neutral"> </span>
|
|
516
|
+
<span class="cline-any cline-neutral"> </span>
|
|
517
|
+
<span class="cline-any cline-neutral"> </span>
|
|
518
|
+
<span class="cline-any cline-neutral"> </span>
|
|
519
|
+
<span class="cline-any cline-neutral"> </span>
|
|
520
|
+
<span class="cline-any cline-neutral"> </span>
|
|
521
|
+
<span class="cline-any cline-yes">1x</span>
|
|
522
|
+
<span class="cline-any cline-neutral"> </span>
|
|
523
|
+
<span class="cline-any cline-neutral"> </span>
|
|
524
|
+
<span class="cline-any cline-no"> </span>
|
|
525
|
+
<span class="cline-any cline-neutral"> </span>
|
|
526
|
+
<span class="cline-any cline-neutral"> </span>
|
|
527
|
+
<span class="cline-any cline-neutral"> </span>
|
|
528
|
+
<span class="cline-any cline-neutral"> </span>
|
|
529
|
+
<span class="cline-any cline-no"> </span>
|
|
530
|
+
<span class="cline-any cline-neutral"> </span>
|
|
531
|
+
<span class="cline-any cline-neutral"> </span>
|
|
532
|
+
<span class="cline-any cline-neutral"> </span>
|
|
533
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
539
|
+
<span class="cline-any cline-neutral"> </span>
|
|
540
|
+
<span class="cline-any cline-neutral"> </span>
|
|
541
|
+
<span class="cline-any cline-neutral"> </span>
|
|
542
|
+
<span class="cline-any cline-neutral"> </span>
|
|
543
|
+
<span class="cline-any cline-yes">20x</span>
|
|
544
|
+
<span class="cline-any cline-neutral"> </span>
|
|
545
|
+
<span class="cline-any cline-neutral"> </span>
|
|
546
|
+
<span class="cline-any cline-neutral"> </span>
|
|
547
|
+
<span class="cline-any cline-yes">20x</span>
|
|
548
|
+
<span class="cline-any cline-neutral"> </span>
|
|
549
|
+
<span class="cline-any cline-neutral"> </span>
|
|
550
|
+
<span class="cline-any cline-no"> </span>
|
|
551
|
+
<span class="cline-any cline-neutral"> </span>
|
|
552
|
+
<span class="cline-any cline-neutral"> </span>
|
|
553
|
+
<span class="cline-any cline-neutral"> </span>
|
|
554
|
+
<span class="cline-any cline-neutral"> </span>
|
|
555
|
+
<span class="cline-any cline-yes">30x</span>
|
|
556
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
562
|
+
<span class="cline-any cline-no"> </span>
|
|
563
|
+
<span class="cline-any cline-no"> </span>
|
|
564
|
+
<span class="cline-any cline-no"> </span>
|
|
565
|
+
<span class="cline-any cline-neutral"> </span>
|
|
566
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
571
|
+
<span class="cline-any cline-neutral"> </span>
|
|
572
|
+
<span class="cline-any cline-no"> </span>
|
|
573
|
+
<span class="cline-any cline-no"> </span>
|
|
574
|
+
<span class="cline-any cline-no"> </span>
|
|
575
|
+
<span class="cline-any cline-neutral"> </span>
|
|
576
|
+
<span class="cline-any cline-no"> </span>
|
|
577
|
+
<span class="cline-any cline-neutral"> </span>
|
|
578
|
+
<span class="cline-any cline-no"> </span>
|
|
579
|
+
<span class="cline-any cline-neutral"> </span>
|
|
580
|
+
<span class="cline-any cline-neutral"> </span>
|
|
581
|
+
<span class="cline-any cline-neutral"> </span>
|
|
582
|
+
<span class="cline-any cline-neutral"> </span>
|
|
583
|
+
<span class="cline-any cline-neutral"> </span>
|
|
584
|
+
<span class="cline-any cline-no"> </span>
|
|
585
|
+
<span class="cline-any cline-no"> </span>
|
|
586
|
+
<span class="cline-any cline-neutral"> </span>
|
|
587
|
+
<span class="cline-any cline-no"> </span>
|
|
588
|
+
<span class="cline-any cline-no"> </span>
|
|
589
|
+
<span class="cline-any cline-neutral"> </span>
|
|
590
|
+
<span class="cline-any cline-neutral"> </span>
|
|
591
|
+
<span class="cline-any cline-no"> </span>
|
|
592
|
+
<span class="cline-any cline-neutral"> </span>
|
|
593
|
+
<span class="cline-any cline-no"> </span>
|
|
594
|
+
<span class="cline-any cline-neutral"> </span>
|
|
595
|
+
<span class="cline-any cline-neutral"> </span>
|
|
596
|
+
<span class="cline-any cline-neutral"> </span>
|
|
597
|
+
<span class="cline-any cline-neutral"> </span>
|
|
598
|
+
<span class="cline-any cline-neutral"> </span>
|
|
599
|
+
<span class="cline-any cline-neutral"> </span>
|
|
600
|
+
<span class="cline-any cline-neutral"> </span>
|
|
601
|
+
<span class="cline-any cline-neutral"> </span>
|
|
602
|
+
<span class="cline-any cline-neutral"> </span>
|
|
603
|
+
<span class="cline-any cline-yes">35x</span>
|
|
604
|
+
<span class="cline-any cline-neutral"> </span>
|
|
605
|
+
<span class="cline-any cline-no"> </span>
|
|
606
|
+
<span class="cline-any cline-no"> </span>
|
|
607
|
+
<span class="cline-any cline-neutral"> </span>
|
|
608
|
+
<span class="cline-any cline-neutral"> </span>
|
|
609
|
+
<span class="cline-any cline-no"> </span>
|
|
610
|
+
<span class="cline-any cline-neutral"> </span>
|
|
611
|
+
<span class="cline-any cline-neutral"> </span>
|
|
612
|
+
<span class="cline-any cline-neutral"> </span>
|
|
613
|
+
<span class="cline-any cline-neutral"> </span>
|
|
614
|
+
<span class="cline-any cline-neutral"> </span>
|
|
615
|
+
<span class="cline-any cline-neutral"> </span>
|
|
616
|
+
<span class="cline-any cline-neutral"> </span>
|
|
617
|
+
<span class="cline-any cline-yes">20x</span>
|
|
618
|
+
<span class="cline-any cline-neutral"> </span>
|
|
619
|
+
<span class="cline-any cline-yes">20x</span>
|
|
620
|
+
<span class="cline-any cline-neutral"> </span>
|
|
621
|
+
<span class="cline-any cline-no"> </span>
|
|
622
|
+
<span class="cline-any cline-neutral"> </span>
|
|
623
|
+
<span class="cline-any cline-neutral"> </span>
|
|
624
|
+
<span class="cline-any cline-neutral"> </span>
|
|
625
|
+
<span class="cline-any cline-no"> </span>
|
|
626
|
+
<span class="cline-any cline-neutral"> </span>
|
|
627
|
+
<span class="cline-any cline-neutral"> </span>
|
|
628
|
+
<span class="cline-any cline-neutral"> </span>
|
|
629
|
+
<span class="cline-any cline-neutral"> </span>
|
|
630
|
+
<span class="cline-any cline-neutral"> </span>
|
|
631
|
+
<span class="cline-any cline-no"> </span>
|
|
632
|
+
<span class="cline-any cline-neutral"> </span>
|
|
633
|
+
<span class="cline-any cline-no"> </span>
|
|
634
|
+
<span class="cline-any cline-no"> </span>
|
|
635
|
+
<span class="cline-any cline-neutral"> </span>
|
|
636
|
+
<span class="cline-any cline-neutral"> </span>
|
|
637
|
+
<span class="cline-any cline-no"> </span>
|
|
638
|
+
<span class="cline-any cline-neutral"> </span>
|
|
639
|
+
<span class="cline-any cline-neutral"> </span>
|
|
640
|
+
<span class="cline-any cline-no"> </span>
|
|
641
|
+
<span class="cline-any cline-no"> </span>
|
|
642
|
+
<span class="cline-any cline-no"> </span>
|
|
643
|
+
<span class="cline-any cline-neutral"> </span>
|
|
644
|
+
<span class="cline-any cline-no"> </span>
|
|
645
|
+
<span class="cline-any cline-neutral"> </span>
|
|
646
|
+
<span class="cline-any cline-neutral"> </span>
|
|
647
|
+
<span class="cline-any cline-neutral"> </span>
|
|
648
|
+
<span class="cline-any cline-neutral"> </span>
|
|
649
|
+
<span class="cline-any cline-neutral"> </span>
|
|
650
|
+
<span class="cline-any cline-no"> </span>
|
|
651
|
+
<span class="cline-any cline-neutral"> </span>
|
|
652
|
+
<span class="cline-any cline-no"> </span>
|
|
653
|
+
<span class="cline-any cline-no"> </span>
|
|
654
|
+
<span class="cline-any cline-no"> </span>
|
|
655
|
+
<span class="cline-any cline-neutral"> </span>
|
|
656
|
+
<span class="cline-any cline-no"> </span>
|
|
657
|
+
<span class="cline-any cline-neutral"> </span>
|
|
658
|
+
<span class="cline-any cline-neutral"> </span>
|
|
659
|
+
<span class="cline-any cline-neutral"> </span>
|
|
660
|
+
<span class="cline-any cline-neutral"> </span>
|
|
661
|
+
<span class="cline-any cline-neutral"> </span>
|
|
662
|
+
<span class="cline-any cline-yes">20x</span>
|
|
663
|
+
<span class="cline-any cline-neutral"> </span>
|
|
664
|
+
<span class="cline-any cline-neutral"> </span>
|
|
665
|
+
<span class="cline-any cline-yes">20x</span>
|
|
666
|
+
<span class="cline-any cline-neutral"> </span>
|
|
667
|
+
<span class="cline-any cline-neutral"> </span>
|
|
668
|
+
<span class="cline-any cline-yes">20x</span>
|
|
669
|
+
<span class="cline-any cline-neutral"> </span>
|
|
670
|
+
<span class="cline-any cline-neutral"> </span>
|
|
671
|
+
<span class="cline-any cline-neutral"> </span>
|
|
672
|
+
<span class="cline-any cline-neutral"> </span>
|
|
673
|
+
<span class="cline-any cline-neutral"> </span>
|
|
674
|
+
<span class="cline-any cline-neutral"> </span>
|
|
675
|
+
<span class="cline-any cline-neutral"> </span>
|
|
676
|
+
<span class="cline-any cline-neutral"> </span>
|
|
677
|
+
<span class="cline-any cline-neutral"> </span>
|
|
678
|
+
<span class="cline-any cline-neutral"> </span>
|
|
679
|
+
<span class="cline-any cline-neutral"> </span>
|
|
680
|
+
<span class="cline-any cline-neutral"> </span>
|
|
681
|
+
<span class="cline-any cline-neutral"> </span>
|
|
682
|
+
<span class="cline-any cline-neutral"> </span>
|
|
683
|
+
<span class="cline-any cline-neutral"> </span>
|
|
684
|
+
<span class="cline-any cline-neutral"> </span>
|
|
685
|
+
<span class="cline-any cline-neutral"> </span>
|
|
686
|
+
<span class="cline-any cline-neutral"> </span>
|
|
687
|
+
<span class="cline-any cline-neutral"> </span>
|
|
688
|
+
<span class="cline-any cline-neutral"> </span>
|
|
689
|
+
<span class="cline-any cline-neutral"> </span>
|
|
690
|
+
<span class="cline-any cline-yes">20x</span>
|
|
691
|
+
<span class="cline-any cline-no"> </span>
|
|
692
|
+
<span class="cline-any cline-neutral"> </span>
|
|
693
|
+
<span class="cline-any cline-neutral"> </span>
|
|
694
|
+
<span class="cline-any cline-yes">20x</span>
|
|
695
|
+
<span class="cline-any cline-neutral"> </span>
|
|
696
|
+
<span class="cline-any cline-neutral"> </span>
|
|
697
|
+
<span class="cline-any cline-neutral"> </span>
|
|
698
|
+
<span class="cline-any cline-neutral"> </span>
|
|
699
|
+
<span class="cline-any cline-neutral"> </span>
|
|
700
|
+
<span class="cline-any cline-neutral"> </span>
|
|
701
|
+
<span class="cline-any cline-neutral"> </span>
|
|
702
|
+
<span class="cline-any cline-neutral"> </span>
|
|
703
|
+
<span class="cline-any cline-neutral"> </span>
|
|
704
|
+
<span class="cline-any cline-yes">1x</span>
|
|
705
|
+
<span class="cline-any cline-neutral"> </span>
|
|
706
|
+
<span class="cline-any cline-neutral"> </span>
|
|
707
|
+
<span class="cline-any cline-neutral"> </span>
|
|
708
|
+
<span class="cline-any cline-neutral"> </span>
|
|
709
|
+
<span class="cline-any cline-neutral"> </span>
|
|
710
|
+
<span class="cline-any cline-neutral"> </span>
|
|
711
|
+
<span class="cline-any cline-neutral"> </span>
|
|
712
|
+
<span class="cline-any cline-neutral"> </span>
|
|
713
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
717
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
721
|
+
<span class="cline-any cline-neutral"> </span>
|
|
722
|
+
<span class="cline-any cline-neutral"> </span>
|
|
723
|
+
<span class="cline-any cline-yes">35x</span>
|
|
724
|
+
<span class="cline-any cline-no"> </span>
|
|
725
|
+
<span class="cline-any cline-neutral"> </span>
|
|
726
|
+
<span class="cline-any cline-neutral"> </span>
|
|
727
|
+
<span class="cline-any cline-yes">35x</span>
|
|
728
|
+
<span class="cline-any cline-neutral"> </span>
|
|
729
|
+
<span class="cline-any cline-yes">35x</span>
|
|
730
|
+
<span class="cline-any cline-no"> </span>
|
|
731
|
+
<span class="cline-any cline-no"> </span>
|
|
732
|
+
<span class="cline-any cline-no"> </span>
|
|
733
|
+
<span class="cline-any cline-neutral"> </span>
|
|
734
|
+
<span class="cline-any cline-neutral"> </span>
|
|
735
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
739
|
+
<span class="cline-any cline-neutral"> </span>
|
|
740
|
+
<span class="cline-any cline-yes">35x</span>
|
|
741
|
+
<span class="cline-any cline-no"> </span>
|
|
742
|
+
<span class="cline-any cline-neutral"> </span>
|
|
743
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
747
|
+
<span class="cline-any cline-no"> </span>
|
|
748
|
+
<span class="cline-any cline-no"> </span>
|
|
749
|
+
<span class="cline-any cline-neutral"> </span>
|
|
750
|
+
<span class="cline-any cline-no"> </span>
|
|
751
|
+
<span class="cline-any cline-no"> </span>
|
|
752
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
756
|
+
<span class="cline-any cline-no"> </span>
|
|
757
|
+
<span class="cline-any cline-no"> </span>
|
|
758
|
+
<span class="cline-any cline-neutral"> </span>
|
|
759
|
+
<span class="cline-any cline-no"> </span>
|
|
760
|
+
<span class="cline-any cline-no"> </span>
|
|
761
|
+
<span class="cline-any cline-neutral"> </span>
|
|
762
|
+
<span class="cline-any cline-neutral"> </span>
|
|
763
|
+
<span class="cline-any cline-no"> </span>
|
|
764
|
+
<span class="cline-any cline-no"> </span>
|
|
765
|
+
<span class="cline-any cline-no"> </span>
|
|
766
|
+
<span class="cline-any cline-neutral"> </span>
|
|
767
|
+
<span class="cline-any cline-no"> </span>
|
|
768
|
+
<span class="cline-any cline-neutral"> </span>
|
|
769
|
+
<span class="cline-any cline-no"> </span>
|
|
770
|
+
<span class="cline-any cline-neutral"> </span>
|
|
771
|
+
<span class="cline-any cline-neutral"> </span>
|
|
772
|
+
<span class="cline-any cline-no"> </span>
|
|
773
|
+
<span class="cline-any cline-neutral"> </span>
|
|
774
|
+
<span class="cline-any cline-neutral"> </span>
|
|
775
|
+
<span class="cline-any cline-no"> </span>
|
|
776
|
+
<span class="cline-any cline-neutral"> </span>
|
|
777
|
+
<span class="cline-any cline-no"> </span>
|
|
778
|
+
<span class="cline-any cline-neutral"> </span>
|
|
779
|
+
<span class="cline-any cline-no"> </span>
|
|
780
|
+
<span class="cline-any cline-neutral"> </span>
|
|
781
|
+
<span class="cline-any cline-neutral"> </span>
|
|
782
|
+
<span class="cline-any cline-neutral"> </span>
|
|
783
|
+
<span class="cline-any cline-yes">35x</span>
|
|
784
|
+
<span class="cline-any cline-neutral"> </span>
|
|
785
|
+
<span class="cline-any cline-neutral"> </span>
|
|
786
|
+
<span class="cline-any cline-neutral"> </span>
|
|
787
|
+
<span class="cline-any cline-yes">5x</span>
|
|
788
|
+
<span class="cline-any cline-neutral"> </span>
|
|
789
|
+
<span class="cline-any cline-neutral"> </span>
|
|
790
|
+
<span class="cline-any cline-neutral"> </span>
|
|
791
|
+
<span class="cline-any cline-neutral"> </span>
|
|
792
|
+
<span class="cline-any cline-no"> </span>
|
|
793
|
+
<span class="cline-any cline-no"> </span>
|
|
794
|
+
<span class="cline-any cline-neutral"> </span>
|
|
795
|
+
<span class="cline-any cline-no"> </span>
|
|
796
|
+
<span class="cline-any cline-no"> </span>
|
|
797
|
+
<span class="cline-any cline-neutral"> </span>
|
|
798
|
+
<span class="cline-any cline-no"> </span>
|
|
799
|
+
<span class="cline-any cline-no"> </span>
|
|
800
|
+
<span class="cline-any cline-neutral"> </span>
|
|
801
|
+
<span class="cline-any cline-neutral"> </span>
|
|
802
|
+
<span class="cline-any cline-no"> </span>
|
|
803
|
+
<span class="cline-any cline-neutral"> </span>
|
|
804
|
+
<span class="cline-any cline-neutral"> </span>
|
|
805
|
+
<span class="cline-any cline-no"> </span>
|
|
806
|
+
<span class="cline-any cline-no"> </span>
|
|
807
|
+
<span class="cline-any cline-neutral"> </span>
|
|
808
|
+
<span class="cline-any cline-neutral"> </span>
|
|
809
|
+
<span class="cline-any cline-no"> </span>
|
|
810
|
+
<span class="cline-any cline-no"> </span>
|
|
811
|
+
<span class="cline-any cline-neutral"> </span>
|
|
812
|
+
<span class="cline-any cline-neutral"> </span>
|
|
813
|
+
<span class="cline-any cline-no"> </span>
|
|
814
|
+
<span class="cline-any cline-no"> </span>
|
|
815
|
+
<span class="cline-any cline-neutral"> </span>
|
|
816
|
+
<span class="cline-any cline-no"> </span>
|
|
817
|
+
<span class="cline-any cline-no"> </span>
|
|
818
|
+
<span class="cline-any cline-neutral"> </span>
|
|
819
|
+
<span class="cline-any cline-no"> </span>
|
|
820
|
+
<span class="cline-any cline-no"> </span>
|
|
821
|
+
<span class="cline-any cline-neutral"> </span>
|
|
822
|
+
<span class="cline-any cline-no"> </span>
|
|
823
|
+
<span class="cline-any cline-no"> </span>
|
|
824
|
+
<span class="cline-any cline-neutral"> </span>
|
|
825
|
+
<span class="cline-any cline-no"> </span>
|
|
826
|
+
<span class="cline-any cline-no"> </span>
|
|
827
|
+
<span class="cline-any cline-no"> </span>
|
|
828
|
+
<span class="cline-any cline-neutral"> </span>
|
|
829
|
+
<span class="cline-any cline-neutral"> </span>
|
|
830
|
+
<span class="cline-any cline-neutral"> </span>
|
|
831
|
+
<span class="cline-any cline-neutral"> </span>
|
|
832
|
+
<span class="cline-any cline-no"> </span>
|
|
833
|
+
<span class="cline-any cline-neutral"> </span>
|
|
834
|
+
<span class="cline-any cline-no"> </span>
|
|
835
|
+
<span class="cline-any cline-no"> </span>
|
|
836
|
+
<span class="cline-any cline-neutral"> </span>
|
|
837
|
+
<span class="cline-any cline-no"> </span>
|
|
838
|
+
<span class="cline-any cline-neutral"> </span>
|
|
839
|
+
<span class="cline-any cline-neutral"> </span>
|
|
840
|
+
<span class="cline-any cline-neutral"> </span>
|
|
841
|
+
<span class="cline-any cline-neutral"> </span>
|
|
842
|
+
<span class="cline-any cline-no"> </span>
|
|
843
|
+
<span class="cline-any cline-no"> </span>
|
|
844
|
+
<span class="cline-any cline-neutral"> </span>
|
|
845
|
+
<span class="cline-any cline-neutral"> </span>
|
|
846
|
+
<span class="cline-any cline-no"> </span>
|
|
847
|
+
<span class="cline-any cline-neutral"> </span>
|
|
848
|
+
<span class="cline-any cline-neutral"> </span>
|
|
849
|
+
<span class="cline-any cline-neutral"> </span>
|
|
850
|
+
<span class="cline-any cline-neutral"> </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"> </span>
|
|
854
|
+
<span class="cline-any cline-neutral"> </span>
|
|
855
|
+
<span class="cline-any cline-yes">6x</span>
|
|
856
|
+
<span class="cline-any cline-neutral"> </span>
|
|
857
|
+
<span class="cline-any cline-neutral"> </span>
|
|
858
|
+
<span class="cline-any cline-neutral"> </span>
|
|
859
|
+
<span class="cline-any cline-neutral"> </span>
|
|
860
|
+
<span class="cline-any cline-yes">6x</span>
|
|
861
|
+
<span class="cline-any cline-neutral"> </span>
|
|
862
|
+
<span class="cline-any cline-neutral"> </span>
|
|
863
|
+
<span class="cline-any cline-neutral"> </span>
|
|
864
|
+
<span class="cline-any cline-neutral"> </span>
|
|
865
|
+
<span class="cline-any cline-yes">30x</span>
|
|
866
|
+
<span class="cline-any cline-neutral"> </span>
|
|
867
|
+
<span class="cline-any cline-neutral"> </span>
|
|
868
|
+
<span class="cline-any cline-neutral"> </span>
|
|
869
|
+
<span class="cline-any cline-neutral"> </span>
|
|
870
|
+
<span class="cline-any cline-yes">1x</span>
|
|
871
|
+
<span class="cline-any cline-neutral"> </span>
|
|
872
|
+
<span class="cline-any cline-neutral"> </span>
|
|
873
|
+
<span class="cline-any cline-neutral"> </span>
|
|
874
|
+
<span class="cline-any cline-neutral"> </span>
|
|
875
|
+
<span class="cline-any cline-yes">1x</span>
|
|
876
|
+
<span class="cline-any cline-neutral"> </span>
|
|
877
|
+
<span class="cline-any cline-yes">1x</span>
|
|
878
|
+
<span class="cline-any cline-neutral"> </span>
|
|
879
|
+
<span class="cline-any cline-neutral"> </span>
|
|
880
|
+
<span class="cline-any cline-neutral"> </span>
|
|
881
|
+
<span class="cline-any cline-neutral"> </span>
|
|
882
|
+
<span class="cline-any cline-yes">1x</span>
|
|
883
|
+
<span class="cline-any cline-neutral"> </span>
|
|
884
|
+
<span class="cline-any cline-neutral"> </span>
|
|
885
|
+
<span class="cline-any cline-yes">1x</span>
|
|
886
|
+
<span class="cline-any cline-neutral"> </span>
|
|
887
|
+
<span class="cline-any cline-neutral"> </span>
|
|
888
|
+
<span class="cline-any cline-neutral"> </span>
|
|
889
|
+
<span class="cline-any cline-neutral"> </span>
|
|
890
|
+
<span class="cline-any cline-neutral"> </span>
|
|
891
|
+
<span class="cline-any cline-yes">1x</span>
|
|
892
|
+
<span class="cline-any cline-neutral"> </span>
|
|
893
|
+
<span class="cline-any cline-neutral"> </span>
|
|
894
|
+
<span class="cline-any cline-yes">1x</span>
|
|
895
|
+
<span class="cline-any cline-neutral"> </span>
|
|
896
|
+
<span class="cline-any cline-neutral"> </span>
|
|
897
|
+
<span class="cline-any cline-neutral"> </span>
|
|
898
|
+
<span class="cline-any cline-neutral"> </span>
|
|
899
|
+
<span class="cline-any cline-neutral"> </span>
|
|
900
|
+
<span class="cline-any cline-yes">1x</span>
|
|
901
|
+
<span class="cline-any cline-neutral"> </span>
|
|
902
|
+
<span class="cline-any cline-neutral"> </span>
|
|
903
|
+
<span class="cline-any cline-yes">1x</span>
|
|
904
|
+
<span class="cline-any cline-neutral"> </span>
|
|
905
|
+
<span class="cline-any cline-neutral"> </span>
|
|
906
|
+
<span class="cline-any cline-neutral"> </span>
|
|
907
|
+
<span class="cline-any cline-neutral"> </span>
|
|
908
|
+
<span class="cline-any cline-neutral"> </span>
|
|
909
|
+
<span class="cline-any cline-neutral"> </span>
|
|
910
|
+
<span class="cline-any cline-yes">1x</span>
|
|
911
|
+
<span class="cline-any cline-neutral"> </span>
|
|
912
|
+
<span class="cline-any cline-neutral"> </span>
|
|
913
|
+
<span class="cline-any cline-neutral"> </span>
|
|
914
|
+
<span class="cline-any cline-neutral"> </span>
|
|
915
|
+
<span class="cline-any cline-neutral"> </span>
|
|
916
|
+
<span class="cline-any cline-neutral"> </span>
|
|
917
|
+
<span class="cline-any cline-neutral"> </span>
|
|
918
|
+
<span class="cline-any cline-neutral"> </span>
|
|
919
|
+
<span class="cline-any cline-neutral"> </span>
|
|
920
|
+
<span class="cline-any cline-neutral"> </span>
|
|
921
|
+
<span class="cline-any cline-neutral"> </span>
|
|
922
|
+
<span class="cline-any cline-neutral"> </span>
|
|
923
|
+
<span class="cline-any cline-neutral"> </span>
|
|
924
|
+
<span class="cline-any cline-neutral"> </span>
|
|
925
|
+
<span class="cline-any cline-neutral"> </span>
|
|
926
|
+
<span class="cline-any cline-neutral"> </span>
|
|
927
|
+
<span class="cline-any cline-neutral"> </span>
|
|
928
|
+
<span class="cline-any cline-neutral"> </span>
|
|
929
|
+
<span class="cline-any cline-neutral"> </span>
|
|
930
|
+
<span class="cline-any cline-neutral"> </span>
|
|
931
|
+
<span class="cline-any cline-neutral"> </span>
|
|
932
|
+
<span class="cline-any cline-neutral"> </span>
|
|
933
|
+
<span class="cline-any cline-neutral"> </span>
|
|
934
|
+
<span class="cline-any cline-neutral"> </span>
|
|
935
|
+
<span class="cline-any cline-neutral"> </span>
|
|
936
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import { F64 } from '@node-dlc/bufio';
|
|
937
|
+
|
|
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) => any;
|
|
944
|
+
deserialize?: (value: any) => 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
|
+
|
|
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
|
+
|
|
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
|
+
|
|
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
|
+
|
|
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 <= BigInt(Number.MAX_SAFE_INTEGER) &&
|
|
983
|
+
value >= 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
|
+
|
|
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
|
+
|
|
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) && 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
|
+
|
|
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) && 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
|
+
|
|
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) < 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
|
+
|
|
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
|
+
|
|
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
|
+
|
|
1047
|
+
<span class="cstat-no" title="statement not covered" > return undefined;</span>
|
|
1048
|
+
}
|
|
1049
|
+
|
|
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) => <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
|
+
|
|
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
|
+
|
|
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
|
+
|
|
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
|
+
|
|
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
|
+
|
|
1098
|
+
// Get standard field aliases for a field name (handles common variations)
|
|
1099
|
+
static getStandardAliases(fieldName: string): string[] {
|
|
1100
|
+
const aliases: string[] = [];
|
|
1101
|
+
|
|
1102
|
+
// Add snake_case variant
|
|
1103
|
+
aliases.push(SerdeHelpers.convertFieldName(fieldName, 'snake_case'));
|
|
1104
|
+
|
|
1105
|
+
// Handle specific common DLC field variations
|
|
1106
|
+
const fieldVariations: Record<string, string[]> = {
|
|
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
|
+
|
|
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
|
+
|
|
1132
|
+
return aliases;
|
|
1133
|
+
}
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
// Field mapping configuration type
|
|
1137
|
+
export interface FieldMapping {
|
|
1138
|
+
[propertyName: string]: SerdeFieldOptions;
|
|
1139
|
+
}
|
|
1140
|
+
|
|
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
|
+
|
|
1146
|
+
// Generic fromJSON that uses field mappings for deserialization
|
|
1147
|
+
public static fromJSONWithMapping<T extends SerdeBase>(
|
|
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
|
+
|
|
1155
|
+
// Add standard aliases if not explicitly provided
|
|
1156
|
+
if (aliases.length === 0) {
|
|
1157
|
+
aliases = SerdeHelpers.getStandardAliases(propKey);
|
|
1158
|
+
}
|
|
1159
|
+
|
|
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
|
+
|
|
1165
|
+
const value = SerdeHelpers.resolveFieldValue(json, propKey, aliases);
|
|
1166
|
+
|
|
1167
|
+
<span class="missing-if-branch" title="if path not taken" >I</span>if (value === undefined && <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
|
+
|
|
1174
|
+
<span class="missing-if-branch" title="else path not taken" >E</span>if (value !== undefined) {
|
|
1175
|
+
let transformedValue = value;
|
|
1176
|
+
|
|
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) => {</span>
|
|
1203
|
+
<span class="cstat-no" title="statement not covered" > if (options.itemType && 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 && typeof value === 'object' && 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
|
+
|
|
1221
|
+
(instance as any)[propKey] = transformedValue;
|
|
1222
|
+
}
|
|
1223
|
+
}
|
|
1224
|
+
|
|
1225
|
+
return instance;
|
|
1226
|
+
}
|
|
1227
|
+
|
|
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
|
+
|
|
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
|
+
|
|
1236
|
+
<span class="cstat-no" title="statement not covered" > if (value === undefined && options.optional) {</span>
|
|
1237
|
+
<span class="cstat-no" title="statement not covered" > continue; </span>// Skip optional undefined fields
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1240
|
+
let serializedValue = <span class="cstat-no" title="statement not covered" >value;</span>
|
|
1241
|
+
|
|
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 && value !== undefined && 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) => {</span>
|
|
1265
|
+
<span class="cstat-no" title="statement not covered" > return item && 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 && 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
|
+
|
|
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
|
+
|
|
1284
|
+
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
|
|
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 =>
|
|
1290
|
+
options;
|
|
1291
|
+
|
|
1292
|
+
// Common field type helpers
|
|
1293
|
+
export const HexField = (aliases: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[])</span>: SerdeFieldOptions => ({
|
|
1294
|
+
type: 'hex',
|
|
1295
|
+
aliases,
|
|
1296
|
+
});
|
|
1297
|
+
|
|
1298
|
+
export const BigIntField = (aliases: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[])</span>: SerdeFieldOptions => ({
|
|
1299
|
+
type: 'bigint',
|
|
1300
|
+
aliases,
|
|
1301
|
+
});
|
|
1302
|
+
|
|
1303
|
+
export const F64Field = (aliases: string[] = []): SerdeFieldOptions => ({
|
|
1304
|
+
type: 'f64',
|
|
1305
|
+
aliases,
|
|
1306
|
+
});
|
|
1307
|
+
|
|
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 => (<span class="cstat-no" title="statement not covered" >{</span>
|
|
1309
|
+
type: 'buffer',
|
|
1310
|
+
aliases,
|
|
1311
|
+
});
|
|
1312
|
+
|
|
1313
|
+
export const DerSignatureField = (
|
|
1314
|
+
aliases: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[],</span>
|
|
1315
|
+
): SerdeFieldOptions => ({
|
|
1316
|
+
type: 'der_signature',
|
|
1317
|
+
aliases,
|
|
1318
|
+
});
|
|
1319
|
+
|
|
1320
|
+
export const ArrayField = (
|
|
1321
|
+
itemType?: string,
|
|
1322
|
+
aliases: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[],</span>
|
|
1323
|
+
): SerdeFieldOptions => ({
|
|
1324
|
+
type: 'array',
|
|
1325
|
+
itemType,
|
|
1326
|
+
aliases,
|
|
1327
|
+
});
|
|
1328
|
+
|
|
1329
|
+
export const ObjectField = (
|
|
1330
|
+
itemType?: string,
|
|
1331
|
+
aliases: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[],</span>
|
|
1332
|
+
): SerdeFieldOptions => ({
|
|
1333
|
+
type: 'object',
|
|
1334
|
+
itemType,
|
|
1335
|
+
aliases,
|
|
1336
|
+
});
|
|
1337
|
+
|
|
1338
|
+
export const OptionalField = (
|
|
1339
|
+
type: SerdeFieldOptions['type'],
|
|
1340
|
+
aliases: string[] = <span class="branch-0 cbranch-no" title="branch not covered" >[],</span>
|
|
1341
|
+
): SerdeFieldOptions => ({
|
|
1342
|
+
type,
|
|
1343
|
+
optional: true,
|
|
1344
|
+
aliases,
|
|
1345
|
+
});
|
|
1346
|
+
|
|
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
|
+
</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
|
+
|