@hsuite/native-connect-angular 1.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/README.md +48 -0
- package/USAGE_EXAMPLES.md +476 -0
- package/assets/wallets/extension.svg +7 -0
- package/assets/wallets/hashpack.svg +6 -0
- package/assets/wallets/hsuite.svg +11 -0
- package/assets/wallets/kabila.svg +11 -0
- package/assets/wallets/walletconnect.svg +13 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/coverage-summary.json +50 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +476 -0
- package/coverage/lcov-report/base.css +224 -0
- package/coverage/lcov-report/block-navigation.js +87 -0
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +476 -0
- package/coverage/lcov-report/lib/components/account-selector/account-actions/account-actions.component.ts.html +868 -0
- package/coverage/lcov-report/lib/components/account-selector/account-actions/index.html +116 -0
- package/coverage/lcov-report/lib/components/account-selector/account-filter/account-filter.component.ts.html +1288 -0
- package/coverage/lcov-report/lib/components/account-selector/account-filter/index.html +116 -0
- package/coverage/lcov-report/lib/components/account-selector/account-formatting.service.ts.html +685 -0
- package/coverage/lcov-report/lib/components/account-selector/account-grouping.service.ts.html +766 -0
- package/coverage/lcov-report/lib/components/account-selector/account-list/account-list.component.ts.html +1495 -0
- package/coverage/lcov-report/lib/components/account-selector/account-list/index.html +116 -0
- package/coverage/lcov-report/lib/components/account-selector/account-selector.component.ts.html +1495 -0
- package/coverage/lcov-report/lib/components/account-selector/account-selector.service.ts.html +1588 -0
- package/coverage/lcov-report/lib/components/account-selector/index.html +161 -0
- package/coverage/lcov-report/lib/components/wallet-account-display/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-account-display/wallet-account-display.component.ts.html +505 -0
- package/coverage/lcov-report/lib/components/wallet-connect-button/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +805 -0
- package/coverage/lcov-report/lib/components/wallet-connect-prompt/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +409 -0
- package/coverage/lcov-report/lib/components/wallet-connected-guard/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +304 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +436 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +2287 -0
- package/coverage/lcov-report/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +2275 -0
- package/coverage/lcov-report/lib/components/wallet-session-display/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-session-display/wallet-session-display.component.ts.html +676 -0
- package/coverage/lcov-report/lib/components/wallet-transaction-status/index.html +116 -0
- package/coverage/lcov-report/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +703 -0
- package/coverage/lcov-report/lib/directives/index.html +146 -0
- package/coverage/lcov-report/lib/directives/wallet-connected.directive.ts.html +670 -0
- package/coverage/lcov-report/lib/directives/wallet-context.directive.ts.html +547 -0
- package/coverage/lcov-report/lib/directives/wallet-events.directive.ts.html +781 -0
- package/coverage/lcov-report/lib/hsuite-wallet.module.ts.html +715 -0
- package/coverage/lcov-report/lib/index.html +116 -0
- package/coverage/lcov-report/lib/models/connection-config.model.ts.html +280 -0
- package/coverage/lcov-report/lib/models/index.html +131 -0
- package/coverage/lcov-report/lib/models/provider-types.ts.html +577 -0
- package/coverage/lcov-report/lib/providers/base-wallet-provider.ts.html +1138 -0
- package/coverage/lcov-report/lib/providers/hsuite-native/channel-client.service.ts.html +2671 -0
- package/coverage/lcov-report/lib/providers/hsuite-native/index.html +116 -0
- package/coverage/lcov-report/lib/providers/hsuite-native-provider.ts.html +2347 -0
- package/coverage/lcov-report/lib/providers/index.html +146 -0
- package/coverage/lcov-report/lib/providers/p2p-native/index.html +131 -0
- package/coverage/lcov-report/lib/providers/p2p-native/p2p-native.provider.ts.html +2254 -0
- package/coverage/lcov-report/lib/providers/p2p-native/p2p-session-manager.ts.html +2170 -0
- package/coverage/lcov-report/lib/providers/wallet-error-handler.ts.html +1132 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/index.html +176 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/session-health.ts.html +673 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1177 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-provider.ts.html +2563 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +904 -0
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +982 -0
- package/coverage/lcov-report/lib/providers/walletconnect/signers/hedera-signer.ts.html +1915 -0
- package/coverage/lcov-report/lib/providers/walletconnect/signers/index.html +146 -0
- package/coverage/lcov-report/lib/providers/walletconnect/signers/signer-factory.ts.html +445 -0
- package/coverage/lcov-report/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1519 -0
- package/coverage/lcov-report/lib/services/index.html +191 -0
- package/coverage/lcov-report/lib/services/logger.service.ts.html +463 -0
- package/coverage/lcov-report/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1840 -0
- package/coverage/lcov-report/lib/services/transaction-builders/hedera-amount-utils.ts.html +337 -0
- package/coverage/lcov-report/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +3940 -0
- package/coverage/lcov-report/lib/services/transaction-builders/index.html +161 -0
- package/coverage/lcov-report/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +2581 -0
- package/coverage/lcov-report/lib/services/transaction.service.ts.html +1123 -0
- package/coverage/lcov-report/lib/services/unified-wallet.service.ts.html +2641 -0
- package/coverage/lcov-report/lib/services/wallet-context.service.ts.html +637 -0
- package/coverage/lcov-report/lib/services/wallet-event-bus.service.ts.html +643 -0
- package/coverage/lcov-report/lib/services/wallet-providers.service.ts.html +496 -0
- package/coverage/lcov-report/lib/transports/chrome-extension-transport.ts.html +823 -0
- package/coverage/lcov-report/lib/transports/index.html +116 -0
- package/coverage/lcov-report/lib/utils/index.html +116 -0
- package/coverage/lcov-report/lib/utils/ledger-icons.util.ts.html +319 -0
- package/coverage/lcov-report/prettify.css +1 -0
- package/coverage/lcov-report/prettify.js +2 -0
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +210 -0
- package/coverage/lcov.info +19252 -0
- package/coverage/lib/components/account-selector/account-actions/account-actions.component.ts.html +868 -0
- package/coverage/lib/components/account-selector/account-actions/index.html +116 -0
- package/coverage/lib/components/account-selector/account-filter/account-filter.component.ts.html +1288 -0
- package/coverage/lib/components/account-selector/account-filter/index.html +116 -0
- package/coverage/lib/components/account-selector/account-formatting.service.ts.html +685 -0
- package/coverage/lib/components/account-selector/account-grouping.service.ts.html +766 -0
- package/coverage/lib/components/account-selector/account-list/account-list.component.ts.html +1495 -0
- package/coverage/lib/components/account-selector/account-list/index.html +116 -0
- package/coverage/lib/components/account-selector/account-selector.component.ts.html +1495 -0
- package/coverage/lib/components/account-selector/account-selector.service.ts.html +1588 -0
- package/coverage/lib/components/account-selector/index.html +161 -0
- package/coverage/lib/components/wallet-account-display/index.html +116 -0
- package/coverage/lib/components/wallet-account-display/wallet-account-display.component.ts.html +505 -0
- package/coverage/lib/components/wallet-connect-button/index.html +116 -0
- package/coverage/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +805 -0
- package/coverage/lib/components/wallet-connect-prompt/index.html +116 -0
- package/coverage/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +409 -0
- package/coverage/lib/components/wallet-connected-guard/index.html +116 -0
- package/coverage/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +304 -0
- package/coverage/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +436 -0
- package/coverage/lib/components/wallet-connection-modal/connection-method-step/index.html +116 -0
- package/coverage/lib/components/wallet-connection-modal/index.html +116 -0
- package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/index.html +116 -0
- package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +2287 -0
- package/coverage/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +2275 -0
- package/coverage/lib/components/wallet-session-display/index.html +116 -0
- package/coverage/lib/components/wallet-session-display/wallet-session-display.component.ts.html +676 -0
- package/coverage/lib/components/wallet-transaction-status/index.html +116 -0
- package/coverage/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +703 -0
- package/coverage/lib/directives/index.html +146 -0
- package/coverage/lib/directives/wallet-connected.directive.ts.html +670 -0
- package/coverage/lib/directives/wallet-context.directive.ts.html +547 -0
- package/coverage/lib/directives/wallet-events.directive.ts.html +781 -0
- package/coverage/lib/hsuite-wallet.module.ts.html +715 -0
- package/coverage/lib/index.html +116 -0
- package/coverage/lib/models/connection-config.model.ts.html +280 -0
- package/coverage/lib/models/index.html +131 -0
- package/coverage/lib/models/provider-types.ts.html +577 -0
- package/coverage/lib/providers/base-wallet-provider.ts.html +1138 -0
- package/coverage/lib/providers/hsuite-native/channel-client.service.ts.html +2671 -0
- package/coverage/lib/providers/hsuite-native/index.html +116 -0
- package/coverage/lib/providers/hsuite-native-provider.ts.html +2347 -0
- package/coverage/lib/providers/index.html +146 -0
- package/coverage/lib/providers/p2p-native/index.html +131 -0
- package/coverage/lib/providers/p2p-native/p2p-native.provider.ts.html +2254 -0
- package/coverage/lib/providers/p2p-native/p2p-session-manager.ts.html +2170 -0
- package/coverage/lib/providers/wallet-error-handler.ts.html +1132 -0
- package/coverage/lib/providers/walletconnect/core/index.html +176 -0
- package/coverage/lib/providers/walletconnect/core/session-health.ts.html +673 -0
- package/coverage/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1177 -0
- package/coverage/lib/providers/walletconnect/core/walletconnect-provider.ts.html +2563 -0
- package/coverage/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +904 -0
- package/coverage/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +982 -0
- package/coverage/lib/providers/walletconnect/signers/hedera-signer.ts.html +1915 -0
- package/coverage/lib/providers/walletconnect/signers/index.html +146 -0
- package/coverage/lib/providers/walletconnect/signers/signer-factory.ts.html +445 -0
- package/coverage/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1519 -0
- package/coverage/lib/services/index.html +191 -0
- package/coverage/lib/services/logger.service.ts.html +463 -0
- package/coverage/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1840 -0
- package/coverage/lib/services/transaction-builders/hedera-amount-utils.ts.html +337 -0
- package/coverage/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +3940 -0
- package/coverage/lib/services/transaction-builders/index.html +161 -0
- package/coverage/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +2581 -0
- package/coverage/lib/services/transaction.service.ts.html +1123 -0
- package/coverage/lib/services/unified-wallet.service.ts.html +2641 -0
- package/coverage/lib/services/wallet-context.service.ts.html +637 -0
- package/coverage/lib/services/wallet-event-bus.service.ts.html +643 -0
- package/coverage/lib/services/wallet-providers.service.ts.html +496 -0
- package/coverage/lib/transports/chrome-extension-transport.ts.html +823 -0
- package/coverage/lib/transports/index.html +116 -0
- package/coverage/lib/utils/index.html +116 -0
- package/coverage/lib/utils/ledger-icons.util.ts.html +319 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/dist/README.md +48 -0
- package/dist/fesm2022/hsuite-native-connect-angular.mjs +14592 -0
- package/dist/fesm2022/hsuite-native-connect-angular.mjs.map +1 -0
- package/dist/index.d.ts +6949 -0
- package/examples/minimal-connect.ts +178 -0
- package/examples/multi-protocol.ts +495 -0
- package/examples/transaction-signing.ts +361 -0
- package/jest.config.json +45 -0
- package/karma.conf.js +42 -0
- package/ng-package.json +20 -0
- package/package.json +60 -0
- package/src/index.ts +203 -0
- package/src/lib/components/account-selector/account-actions/account-actions.component.ts +261 -0
- package/src/lib/components/account-selector/account-filter/account-filter.component.ts +401 -0
- package/src/lib/components/account-selector/account-formatting.service.ts +200 -0
- package/src/lib/components/account-selector/account-grouping.service.ts +227 -0
- package/src/lib/components/account-selector/account-list/account-list.component.ts +470 -0
- package/src/lib/components/account-selector/account-selector.component.html +135 -0
- package/src/lib/components/account-selector/account-selector.component.scss +2039 -0
- package/src/lib/components/account-selector/account-selector.component.ts +470 -0
- package/src/lib/components/account-selector/account-selector.service.ts +501 -0
- package/src/lib/components/wallet-account-display/wallet-account-display.component.html +34 -0
- package/src/lib/components/wallet-account-display/wallet-account-display.component.scss +99 -0
- package/src/lib/components/wallet-account-display/wallet-account-display.component.ts +140 -0
- package/src/lib/components/wallet-connect-button/wallet-connect-button.component.html +14 -0
- package/src/lib/components/wallet-connect-button/wallet-connect-button.component.scss +272 -0
- package/src/lib/components/wallet-connect-button/wallet-connect-button.component.ts +240 -0
- package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.html +24 -0
- package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.scss +50 -0
- package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts +108 -0
- package/src/lib/components/wallet-connected-guard/wallet-connected-guard.component.html +24 -0
- package/src/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts +73 -0
- package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.html +56 -0
- package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.scss +218 -0
- package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts +117 -0
- package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.html +94 -0
- package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.scss +272 -0
- package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts +734 -0
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.html +197 -0
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.scss +678 -0
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts +730 -0
- package/src/lib/components/wallet-session-display/wallet-session-display.component.html +110 -0
- package/src/lib/components/wallet-session-display/wallet-session-display.component.scss +179 -0
- package/src/lib/components/wallet-session-display/wallet-session-display.component.ts +197 -0
- package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.html +65 -0
- package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.scss +254 -0
- package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts +206 -0
- package/src/lib/directives/wallet-connected.directive.ts +195 -0
- package/src/lib/directives/wallet-context.directive.ts +154 -0
- package/src/lib/directives/wallet-events.directive.ts +232 -0
- package/src/lib/hsuite-wallet.module.ts +210 -0
- package/src/lib/models/connection-config.model.ts +65 -0
- package/src/lib/models/provider-types.ts +164 -0
- package/src/lib/models/unified-account.model.ts +76 -0
- package/src/lib/models/wallet-context.model.ts +121 -0
- package/src/lib/models/wallet-events.model.ts +158 -0
- package/src/lib/providers/base-wallet-provider.ts +351 -0
- package/src/lib/providers/hsuite-native/channel-client.service.spec.ts +73 -0
- package/src/lib/providers/hsuite-native/channel-client.service.ts +862 -0
- package/src/lib/providers/hsuite-native/index.ts +8 -0
- package/src/lib/providers/hsuite-native-provider.ts +754 -0
- package/src/lib/providers/mobile-native/mobile-native.provider.spec.ts +19 -0
- package/src/lib/providers/p2p-native/index.ts +30 -0
- package/src/lib/providers/p2p-native/p2p-native.provider.spec.ts +523 -0
- package/src/lib/providers/p2p-native/p2p-native.provider.ts +723 -0
- package/src/lib/providers/p2p-native/p2p-session-manager.ts +695 -0
- package/src/lib/providers/wallet-error-handler.ts +349 -0
- package/src/lib/providers/walletconnect/core/base-signer.interface.ts +122 -0
- package/src/lib/providers/walletconnect/core/session-health.ts +196 -0
- package/src/lib/providers/walletconnect/core/walletconnect-client-manager.ts +364 -0
- package/src/lib/providers/walletconnect/core/walletconnect-provider.integration.spec.ts +348 -0
- package/src/lib/providers/walletconnect/core/walletconnect-provider.ts +826 -0
- package/src/lib/providers/walletconnect/core/walletconnect-session-store.ts +273 -0
- package/src/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts +299 -0
- package/src/lib/providers/walletconnect/core/walletconnect-types.ts +48 -0
- package/src/lib/providers/walletconnect/index.ts +33 -0
- package/src/lib/providers/walletconnect/signers/hedera-signer.spec.ts +367 -0
- package/src/lib/providers/walletconnect/signers/hedera-signer.ts +610 -0
- package/src/lib/providers/walletconnect/signers/signer-factory.spec.ts +62 -0
- package/src/lib/providers/walletconnect/signers/signer-factory.ts +120 -0
- package/src/lib/providers/walletconnect/signers/xrpl-signer.spec.ts +296 -0
- package/src/lib/providers/walletconnect/signers/xrpl-signer.ts +478 -0
- package/src/lib/services/logger.service.ts +126 -0
- package/src/lib/services/transaction-builders/base-transaction-builder.service.ts +585 -0
- package/src/lib/services/transaction-builders/hedera-amount-utils.ts +84 -0
- package/src/lib/services/transaction-builders/hedera-transaction-builder.service.spec.ts +741 -0
- package/src/lib/services/transaction-builders/hedera-transaction-builder.service.ts +1285 -0
- package/src/lib/services/transaction-builders/index.ts +54 -0
- package/src/lib/services/transaction-builders/xrpl-transaction-builder.service.spec.ts +937 -0
- package/src/lib/services/transaction-builders/xrpl-transaction-builder.service.ts +832 -0
- package/src/lib/services/transaction.service.ts +346 -0
- package/src/lib/services/unified-wallet.service.spec.ts +1382 -0
- package/src/lib/services/unified-wallet.service.ts +852 -0
- package/src/lib/services/wallet-context.service.ts +184 -0
- package/src/lib/services/wallet-event-bus.service.ts +186 -0
- package/src/lib/services/wallet-providers.service.ts +137 -0
- package/src/lib/transports/chrome-extension-transport.ts +246 -0
- package/src/lib/utils/index.ts +14 -0
- package/src/lib/utils/ledger-icons.util.ts +78 -0
- package/test/test-setup.ts +21 -0
- package/test-setup.ts +63 -0
- package/tsconfig.build.json +11 -0
- package/tsconfig.json +29 -0
- package/tsconfig.spec.json +15 -0
- package/vitest.config.ts +48 -0
|
@@ -0,0 +1,1123 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
|
|
5
|
+
<head>
|
|
6
|
+
<title>Code coverage report for lib/services/transaction.service.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/services</a> transaction.service.ts</h1>
|
|
23
|
+
<div class='clearfix'>
|
|
24
|
+
|
|
25
|
+
<div class='fl pad1y space-right2'>
|
|
26
|
+
<span class="strong">0% </span>
|
|
27
|
+
<span class="quiet">Statements</span>
|
|
28
|
+
<span class='fraction'>0/346</span>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<div class='fl pad1y space-right2'>
|
|
33
|
+
<span class="strong">0% </span>
|
|
34
|
+
<span class="quiet">Branches</span>
|
|
35
|
+
<span class='fraction'>0/1</span>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<div class='fl pad1y space-right2'>
|
|
40
|
+
<span class="strong">0% </span>
|
|
41
|
+
<span class="quiet">Functions</span>
|
|
42
|
+
<span class='fraction'>0/1</span>
|
|
43
|
+
</div>
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
<div class='fl pad1y space-right2'>
|
|
47
|
+
<span class="strong">0% </span>
|
|
48
|
+
<span class="quiet">Lines</span>
|
|
49
|
+
<span class='fraction'>0/346</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
|
+
<template id="filterTemplate">
|
|
58
|
+
<div class="quiet">
|
|
59
|
+
Filter:
|
|
60
|
+
<input type="search" id="fileSearch">
|
|
61
|
+
</div>
|
|
62
|
+
</template>
|
|
63
|
+
</div>
|
|
64
|
+
<div class='status-line low'></div>
|
|
65
|
+
<pre><table class="coverage">
|
|
66
|
+
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
+
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
+
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
+
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
+
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
+
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
+
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
+
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
+
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
+
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
+
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
+
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
+
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
+
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
+
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
+
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
+
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
+
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
+
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
+
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
+
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
+
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
+
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
+
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
+
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
+
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
+
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
+
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
+
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
+
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
+
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
+
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
+
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
+
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
+
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
+
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
+
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
+
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
+
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
+
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
+
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
+
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
+
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
+
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
+
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
+
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
+
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
+
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
+
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
+
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
+
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
+
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
+
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
+
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
+
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
+
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
+
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
+
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
+
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
+
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
+
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
+
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
+
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
+
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
+
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
+
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
+
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
+
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
+
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
+
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
+
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
+
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
+
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
+
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
+
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
+
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
+
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
+
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
+
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
+
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
+
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
+
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
+
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
+
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
+
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
+
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
+
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
+
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
+
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
+
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
+
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
+
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
+
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
+
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
+
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
+
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
+
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
+
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
+
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
+
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
+
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
+
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
+
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
+
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
+
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
+
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
+
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
+
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
+
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
+
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
+
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
+
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
+
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
+
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
+
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
+
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
+
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
+
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
+
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
+
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
+
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
+
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
+
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
+
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
+
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
+
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
+
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
+
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
+
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
+
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
+
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
+
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
+
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
+
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
+
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
+
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
+
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
+
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
+
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
+
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
+
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
+
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
+
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
+
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
+
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
+
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
+
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
+
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
+
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
+
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
+
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
+
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
+
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
+
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
+
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
+
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
+
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
+
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
+
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
+
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
+
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
+
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
+
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
+
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
+
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
+
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
+
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
+
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
+
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
+
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
+
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
+
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
+
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
+
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
+
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
+
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
+
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
+
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
+
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
+
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
+
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
+
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
+
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
+
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
+
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
+
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
+
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
+
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
+
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
+
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
+
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
+
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
+
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
+
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
+
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
+
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
+
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
+
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
+
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
+
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
+
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
+
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
+
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
+
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
+
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
+
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
+
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
+
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
+
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
+
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
+
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
+
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
+
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
+
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
+
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
+
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
+
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
+
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
+
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
+
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
+
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
+
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
+
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
+
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
+
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
+
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
+
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
+
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
+
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
+
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
+
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
+
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
+
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
+
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
+
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
+
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
+
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
+
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
+
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
+
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
+
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
+
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
+
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
+
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
+
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
+
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
+
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
+
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
+
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
+
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
+
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
+
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
+
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
+
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
+
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
+
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
+
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
+
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
+
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
+
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
+
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
+
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
+
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
+
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
+
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
+
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
+
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
+
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
+
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
+
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
+
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
+
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
+
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
+
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
+
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
+
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
+
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
+
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
+
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
+
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
+
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
+
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
+
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
+
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
+
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
+
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
+
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
+
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
+
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
+
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
+
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
+
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
+
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
+
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
+
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
+
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
+
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
+
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
+
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
+
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
+
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
+
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
+
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
+
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
+
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
+
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
+
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
+
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
+
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
+
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
+
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
+
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
+
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
+
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
+
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
+
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
+
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
+
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
+
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
+
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
+
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
+
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
+
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
+
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
+
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
+
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
+
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
+
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
+
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
+
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
+
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
+
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
+
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
+
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
+
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
+
<a name='L347'></a><a href='#L347'>347</a></td><td class="line-coverage quiet"><span class="cline-any cline-no"> </span>
|
|
413
|
+
<span class="cline-any cline-no"> </span>
|
|
414
|
+
<span class="cline-any cline-no"> </span>
|
|
415
|
+
<span class="cline-any cline-no"> </span>
|
|
416
|
+
<span class="cline-any cline-no"> </span>
|
|
417
|
+
<span class="cline-any cline-no"> </span>
|
|
418
|
+
<span class="cline-any cline-no"> </span>
|
|
419
|
+
<span class="cline-any cline-no"> </span>
|
|
420
|
+
<span class="cline-any cline-no"> </span>
|
|
421
|
+
<span class="cline-any cline-no"> </span>
|
|
422
|
+
<span class="cline-any cline-no"> </span>
|
|
423
|
+
<span class="cline-any cline-no"> </span>
|
|
424
|
+
<span class="cline-any cline-no"> </span>
|
|
425
|
+
<span class="cline-any cline-no"> </span>
|
|
426
|
+
<span class="cline-any cline-no"> </span>
|
|
427
|
+
<span class="cline-any cline-no"> </span>
|
|
428
|
+
<span class="cline-any cline-no"> </span>
|
|
429
|
+
<span class="cline-any cline-no"> </span>
|
|
430
|
+
<span class="cline-any cline-no"> </span>
|
|
431
|
+
<span class="cline-any cline-no"> </span>
|
|
432
|
+
<span class="cline-any cline-no"> </span>
|
|
433
|
+
<span class="cline-any cline-no"> </span>
|
|
434
|
+
<span class="cline-any cline-no"> </span>
|
|
435
|
+
<span class="cline-any cline-no"> </span>
|
|
436
|
+
<span class="cline-any cline-no"> </span>
|
|
437
|
+
<span class="cline-any cline-no"> </span>
|
|
438
|
+
<span class="cline-any cline-no"> </span>
|
|
439
|
+
<span class="cline-any cline-no"> </span>
|
|
440
|
+
<span class="cline-any cline-no"> </span>
|
|
441
|
+
<span class="cline-any cline-no"> </span>
|
|
442
|
+
<span class="cline-any cline-no"> </span>
|
|
443
|
+
<span class="cline-any cline-no"> </span>
|
|
444
|
+
<span class="cline-any cline-no"> </span>
|
|
445
|
+
<span class="cline-any cline-no"> </span>
|
|
446
|
+
<span class="cline-any cline-no"> </span>
|
|
447
|
+
<span class="cline-any cline-no"> </span>
|
|
448
|
+
<span class="cline-any cline-no"> </span>
|
|
449
|
+
<span class="cline-any cline-no"> </span>
|
|
450
|
+
<span class="cline-any cline-no"> </span>
|
|
451
|
+
<span class="cline-any cline-no"> </span>
|
|
452
|
+
<span class="cline-any cline-no"> </span>
|
|
453
|
+
<span class="cline-any cline-no"> </span>
|
|
454
|
+
<span class="cline-any cline-no"> </span>
|
|
455
|
+
<span class="cline-any cline-no"> </span>
|
|
456
|
+
<span class="cline-any cline-no"> </span>
|
|
457
|
+
<span class="cline-any cline-no"> </span>
|
|
458
|
+
<span class="cline-any cline-no"> </span>
|
|
459
|
+
<span class="cline-any cline-no"> </span>
|
|
460
|
+
<span class="cline-any cline-no"> </span>
|
|
461
|
+
<span class="cline-any cline-no"> </span>
|
|
462
|
+
<span class="cline-any cline-no"> </span>
|
|
463
|
+
<span class="cline-any cline-no"> </span>
|
|
464
|
+
<span class="cline-any cline-no"> </span>
|
|
465
|
+
<span class="cline-any cline-no"> </span>
|
|
466
|
+
<span class="cline-any cline-no"> </span>
|
|
467
|
+
<span class="cline-any cline-no"> </span>
|
|
468
|
+
<span class="cline-any cline-no"> </span>
|
|
469
|
+
<span class="cline-any cline-no"> </span>
|
|
470
|
+
<span class="cline-any cline-no"> </span>
|
|
471
|
+
<span class="cline-any cline-no"> </span>
|
|
472
|
+
<span class="cline-any cline-no"> </span>
|
|
473
|
+
<span class="cline-any cline-no"> </span>
|
|
474
|
+
<span class="cline-any cline-no"> </span>
|
|
475
|
+
<span class="cline-any cline-no"> </span>
|
|
476
|
+
<span class="cline-any cline-no"> </span>
|
|
477
|
+
<span class="cline-any cline-no"> </span>
|
|
478
|
+
<span class="cline-any cline-no"> </span>
|
|
479
|
+
<span class="cline-any cline-no"> </span>
|
|
480
|
+
<span class="cline-any cline-no"> </span>
|
|
481
|
+
<span class="cline-any cline-no"> </span>
|
|
482
|
+
<span class="cline-any cline-no"> </span>
|
|
483
|
+
<span class="cline-any cline-no"> </span>
|
|
484
|
+
<span class="cline-any cline-no"> </span>
|
|
485
|
+
<span class="cline-any cline-no"> </span>
|
|
486
|
+
<span class="cline-any cline-no"> </span>
|
|
487
|
+
<span class="cline-any cline-no"> </span>
|
|
488
|
+
<span class="cline-any cline-no"> </span>
|
|
489
|
+
<span class="cline-any cline-no"> </span>
|
|
490
|
+
<span class="cline-any cline-no"> </span>
|
|
491
|
+
<span class="cline-any cline-no"> </span>
|
|
492
|
+
<span class="cline-any cline-no"> </span>
|
|
493
|
+
<span class="cline-any cline-no"> </span>
|
|
494
|
+
<span class="cline-any cline-no"> </span>
|
|
495
|
+
<span class="cline-any cline-no"> </span>
|
|
496
|
+
<span class="cline-any cline-no"> </span>
|
|
497
|
+
<span class="cline-any cline-no"> </span>
|
|
498
|
+
<span class="cline-any cline-no"> </span>
|
|
499
|
+
<span class="cline-any cline-no"> </span>
|
|
500
|
+
<span class="cline-any cline-no"> </span>
|
|
501
|
+
<span class="cline-any cline-no"> </span>
|
|
502
|
+
<span class="cline-any cline-no"> </span>
|
|
503
|
+
<span class="cline-any cline-no"> </span>
|
|
504
|
+
<span class="cline-any cline-no"> </span>
|
|
505
|
+
<span class="cline-any cline-no"> </span>
|
|
506
|
+
<span class="cline-any cline-no"> </span>
|
|
507
|
+
<span class="cline-any cline-no"> </span>
|
|
508
|
+
<span class="cline-any cline-no"> </span>
|
|
509
|
+
<span class="cline-any cline-no"> </span>
|
|
510
|
+
<span class="cline-any cline-no"> </span>
|
|
511
|
+
<span class="cline-any cline-no"> </span>
|
|
512
|
+
<span class="cline-any cline-no"> </span>
|
|
513
|
+
<span class="cline-any cline-no"> </span>
|
|
514
|
+
<span class="cline-any cline-no"> </span>
|
|
515
|
+
<span class="cline-any cline-no"> </span>
|
|
516
|
+
<span class="cline-any cline-no"> </span>
|
|
517
|
+
<span class="cline-any cline-no"> </span>
|
|
518
|
+
<span class="cline-any cline-no"> </span>
|
|
519
|
+
<span class="cline-any cline-no"> </span>
|
|
520
|
+
<span class="cline-any cline-no"> </span>
|
|
521
|
+
<span class="cline-any cline-no"> </span>
|
|
522
|
+
<span class="cline-any cline-no"> </span>
|
|
523
|
+
<span class="cline-any cline-no"> </span>
|
|
524
|
+
<span class="cline-any cline-no"> </span>
|
|
525
|
+
<span class="cline-any cline-no"> </span>
|
|
526
|
+
<span class="cline-any cline-no"> </span>
|
|
527
|
+
<span class="cline-any cline-no"> </span>
|
|
528
|
+
<span class="cline-any cline-no"> </span>
|
|
529
|
+
<span class="cline-any cline-no"> </span>
|
|
530
|
+
<span class="cline-any cline-no"> </span>
|
|
531
|
+
<span class="cline-any cline-no"> </span>
|
|
532
|
+
<span class="cline-any cline-no"> </span>
|
|
533
|
+
<span class="cline-any cline-no"> </span>
|
|
534
|
+
<span class="cline-any cline-no"> </span>
|
|
535
|
+
<span class="cline-any cline-no"> </span>
|
|
536
|
+
<span class="cline-any cline-no"> </span>
|
|
537
|
+
<span class="cline-any cline-no"> </span>
|
|
538
|
+
<span class="cline-any cline-no"> </span>
|
|
539
|
+
<span class="cline-any cline-no"> </span>
|
|
540
|
+
<span class="cline-any cline-no"> </span>
|
|
541
|
+
<span class="cline-any cline-no"> </span>
|
|
542
|
+
<span class="cline-any cline-no"> </span>
|
|
543
|
+
<span class="cline-any cline-no"> </span>
|
|
544
|
+
<span class="cline-any cline-no"> </span>
|
|
545
|
+
<span class="cline-any cline-no"> </span>
|
|
546
|
+
<span class="cline-any cline-no"> </span>
|
|
547
|
+
<span class="cline-any cline-no"> </span>
|
|
548
|
+
<span class="cline-any cline-no"> </span>
|
|
549
|
+
<span class="cline-any cline-no"> </span>
|
|
550
|
+
<span class="cline-any cline-no"> </span>
|
|
551
|
+
<span class="cline-any cline-no"> </span>
|
|
552
|
+
<span class="cline-any cline-no"> </span>
|
|
553
|
+
<span class="cline-any cline-no"> </span>
|
|
554
|
+
<span class="cline-any cline-no"> </span>
|
|
555
|
+
<span class="cline-any cline-no"> </span>
|
|
556
|
+
<span class="cline-any cline-no"> </span>
|
|
557
|
+
<span class="cline-any cline-no"> </span>
|
|
558
|
+
<span class="cline-any cline-no"> </span>
|
|
559
|
+
<span class="cline-any cline-no"> </span>
|
|
560
|
+
<span class="cline-any cline-no"> </span>
|
|
561
|
+
<span class="cline-any cline-no"> </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-no"> </span>
|
|
566
|
+
<span class="cline-any cline-no"> </span>
|
|
567
|
+
<span class="cline-any cline-no"> </span>
|
|
568
|
+
<span class="cline-any cline-no"> </span>
|
|
569
|
+
<span class="cline-any cline-no"> </span>
|
|
570
|
+
<span class="cline-any cline-no"> </span>
|
|
571
|
+
<span class="cline-any cline-no"> </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-no"> </span>
|
|
576
|
+
<span class="cline-any cline-no"> </span>
|
|
577
|
+
<span class="cline-any cline-no"> </span>
|
|
578
|
+
<span class="cline-any cline-no"> </span>
|
|
579
|
+
<span class="cline-any cline-no"> </span>
|
|
580
|
+
<span class="cline-any cline-no"> </span>
|
|
581
|
+
<span class="cline-any cline-no"> </span>
|
|
582
|
+
<span class="cline-any cline-no"> </span>
|
|
583
|
+
<span class="cline-any cline-no"> </span>
|
|
584
|
+
<span class="cline-any cline-no"> </span>
|
|
585
|
+
<span class="cline-any cline-no"> </span>
|
|
586
|
+
<span class="cline-any cline-no"> </span>
|
|
587
|
+
<span class="cline-any cline-no"> </span>
|
|
588
|
+
<span class="cline-any cline-no"> </span>
|
|
589
|
+
<span class="cline-any cline-no"> </span>
|
|
590
|
+
<span class="cline-any cline-no"> </span>
|
|
591
|
+
<span class="cline-any cline-no"> </span>
|
|
592
|
+
<span class="cline-any cline-no"> </span>
|
|
593
|
+
<span class="cline-any cline-no"> </span>
|
|
594
|
+
<span class="cline-any cline-no"> </span>
|
|
595
|
+
<span class="cline-any cline-no"> </span>
|
|
596
|
+
<span class="cline-any cline-no"> </span>
|
|
597
|
+
<span class="cline-any cline-no"> </span>
|
|
598
|
+
<span class="cline-any cline-no"> </span>
|
|
599
|
+
<span class="cline-any cline-no"> </span>
|
|
600
|
+
<span class="cline-any cline-no"> </span>
|
|
601
|
+
<span class="cline-any cline-no"> </span>
|
|
602
|
+
<span class="cline-any cline-no"> </span>
|
|
603
|
+
<span class="cline-any cline-no"> </span>
|
|
604
|
+
<span class="cline-any cline-no"> </span>
|
|
605
|
+
<span class="cline-any cline-no"> </span>
|
|
606
|
+
<span class="cline-any cline-no"> </span>
|
|
607
|
+
<span class="cline-any cline-no"> </span>
|
|
608
|
+
<span class="cline-any cline-no"> </span>
|
|
609
|
+
<span class="cline-any cline-no"> </span>
|
|
610
|
+
<span class="cline-any cline-no"> </span>
|
|
611
|
+
<span class="cline-any cline-no"> </span>
|
|
612
|
+
<span class="cline-any cline-no"> </span>
|
|
613
|
+
<span class="cline-any cline-no"> </span>
|
|
614
|
+
<span class="cline-any cline-no"> </span>
|
|
615
|
+
<span class="cline-any cline-no"> </span>
|
|
616
|
+
<span class="cline-any cline-no"> </span>
|
|
617
|
+
<span class="cline-any cline-no"> </span>
|
|
618
|
+
<span class="cline-any cline-no"> </span>
|
|
619
|
+
<span class="cline-any cline-no"> </span>
|
|
620
|
+
<span class="cline-any cline-no"> </span>
|
|
621
|
+
<span class="cline-any cline-no"> </span>
|
|
622
|
+
<span class="cline-any cline-no"> </span>
|
|
623
|
+
<span class="cline-any cline-no"> </span>
|
|
624
|
+
<span class="cline-any cline-no"> </span>
|
|
625
|
+
<span class="cline-any cline-no"> </span>
|
|
626
|
+
<span class="cline-any cline-no"> </span>
|
|
627
|
+
<span class="cline-any cline-no"> </span>
|
|
628
|
+
<span class="cline-any cline-no"> </span>
|
|
629
|
+
<span class="cline-any cline-no"> </span>
|
|
630
|
+
<span class="cline-any cline-no"> </span>
|
|
631
|
+
<span class="cline-any cline-no"> </span>
|
|
632
|
+
<span class="cline-any cline-no"> </span>
|
|
633
|
+
<span class="cline-any cline-no"> </span>
|
|
634
|
+
<span class="cline-any cline-no"> </span>
|
|
635
|
+
<span class="cline-any cline-no"> </span>
|
|
636
|
+
<span class="cline-any cline-no"> </span>
|
|
637
|
+
<span class="cline-any cline-no"> </span>
|
|
638
|
+
<span class="cline-any cline-no"> </span>
|
|
639
|
+
<span class="cline-any cline-no"> </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-no"> </span>
|
|
644
|
+
<span class="cline-any cline-no"> </span>
|
|
645
|
+
<span class="cline-any cline-no"> </span>
|
|
646
|
+
<span class="cline-any cline-no"> </span>
|
|
647
|
+
<span class="cline-any cline-no"> </span>
|
|
648
|
+
<span class="cline-any cline-no"> </span>
|
|
649
|
+
<span class="cline-any cline-no"> </span>
|
|
650
|
+
<span class="cline-any cline-no"> </span>
|
|
651
|
+
<span class="cline-any cline-no"> </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-no"> </span>
|
|
656
|
+
<span class="cline-any cline-no"> </span>
|
|
657
|
+
<span class="cline-any cline-no"> </span>
|
|
658
|
+
<span class="cline-any cline-no"> </span>
|
|
659
|
+
<span class="cline-any cline-no"> </span>
|
|
660
|
+
<span class="cline-any cline-no"> </span>
|
|
661
|
+
<span class="cline-any cline-no"> </span>
|
|
662
|
+
<span class="cline-any cline-no"> </span>
|
|
663
|
+
<span class="cline-any cline-no"> </span>
|
|
664
|
+
<span class="cline-any cline-no"> </span>
|
|
665
|
+
<span class="cline-any cline-no"> </span>
|
|
666
|
+
<span class="cline-any cline-no"> </span>
|
|
667
|
+
<span class="cline-any cline-no"> </span>
|
|
668
|
+
<span class="cline-any cline-no"> </span>
|
|
669
|
+
<span class="cline-any cline-no"> </span>
|
|
670
|
+
<span class="cline-any cline-no"> </span>
|
|
671
|
+
<span class="cline-any cline-no"> </span>
|
|
672
|
+
<span class="cline-any cline-no"> </span>
|
|
673
|
+
<span class="cline-any cline-no"> </span>
|
|
674
|
+
<span class="cline-any cline-no"> </span>
|
|
675
|
+
<span class="cline-any cline-no"> </span>
|
|
676
|
+
<span class="cline-any cline-no"> </span>
|
|
677
|
+
<span class="cline-any cline-no"> </span>
|
|
678
|
+
<span class="cline-any cline-no"> </span>
|
|
679
|
+
<span class="cline-any cline-no"> </span>
|
|
680
|
+
<span class="cline-any cline-no"> </span>
|
|
681
|
+
<span class="cline-any cline-no"> </span>
|
|
682
|
+
<span class="cline-any cline-no"> </span>
|
|
683
|
+
<span class="cline-any cline-no"> </span>
|
|
684
|
+
<span class="cline-any cline-no"> </span>
|
|
685
|
+
<span class="cline-any cline-no"> </span>
|
|
686
|
+
<span class="cline-any cline-no"> </span>
|
|
687
|
+
<span class="cline-any cline-no"> </span>
|
|
688
|
+
<span class="cline-any cline-no"> </span>
|
|
689
|
+
<span class="cline-any cline-no"> </span>
|
|
690
|
+
<span class="cline-any cline-no"> </span>
|
|
691
|
+
<span class="cline-any cline-no"> </span>
|
|
692
|
+
<span class="cline-any cline-no"> </span>
|
|
693
|
+
<span class="cline-any cline-no"> </span>
|
|
694
|
+
<span class="cline-any cline-no"> </span>
|
|
695
|
+
<span class="cline-any cline-no"> </span>
|
|
696
|
+
<span class="cline-any cline-no"> </span>
|
|
697
|
+
<span class="cline-any cline-no"> </span>
|
|
698
|
+
<span class="cline-any cline-no"> </span>
|
|
699
|
+
<span class="cline-any cline-no"> </span>
|
|
700
|
+
<span class="cline-any cline-no"> </span>
|
|
701
|
+
<span class="cline-any cline-no"> </span>
|
|
702
|
+
<span class="cline-any cline-no"> </span>
|
|
703
|
+
<span class="cline-any cline-no"> </span>
|
|
704
|
+
<span class="cline-any cline-no"> </span>
|
|
705
|
+
<span class="cline-any cline-no"> </span>
|
|
706
|
+
<span class="cline-any cline-no"> </span>
|
|
707
|
+
<span class="cline-any cline-no"> </span>
|
|
708
|
+
<span class="cline-any cline-no"> </span>
|
|
709
|
+
<span class="cline-any cline-no"> </span>
|
|
710
|
+
<span class="cline-any cline-no"> </span>
|
|
711
|
+
<span class="cline-any cline-no"> </span>
|
|
712
|
+
<span class="cline-any cline-no"> </span>
|
|
713
|
+
<span class="cline-any cline-no"> </span>
|
|
714
|
+
<span class="cline-any cline-no"> </span>
|
|
715
|
+
<span class="cline-any cline-no"> </span>
|
|
716
|
+
<span class="cline-any cline-no"> </span>
|
|
717
|
+
<span class="cline-any cline-no"> </span>
|
|
718
|
+
<span class="cline-any cline-no"> </span>
|
|
719
|
+
<span class="cline-any cline-no"> </span>
|
|
720
|
+
<span class="cline-any cline-no"> </span>
|
|
721
|
+
<span class="cline-any cline-no"> </span>
|
|
722
|
+
<span class="cline-any cline-no"> </span>
|
|
723
|
+
<span class="cline-any cline-no"> </span>
|
|
724
|
+
<span class="cline-any cline-no"> </span>
|
|
725
|
+
<span class="cline-any cline-no"> </span>
|
|
726
|
+
<span class="cline-any cline-no"> </span>
|
|
727
|
+
<span class="cline-any cline-no"> </span>
|
|
728
|
+
<span class="cline-any cline-no"> </span>
|
|
729
|
+
<span class="cline-any cline-no"> </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-no"> </span>
|
|
734
|
+
<span class="cline-any cline-no"> </span>
|
|
735
|
+
<span class="cline-any cline-no"> </span>
|
|
736
|
+
<span class="cline-any cline-no"> </span>
|
|
737
|
+
<span class="cline-any cline-no"> </span>
|
|
738
|
+
<span class="cline-any cline-no"> </span>
|
|
739
|
+
<span class="cline-any cline-no"> </span>
|
|
740
|
+
<span class="cline-any cline-no"> </span>
|
|
741
|
+
<span class="cline-any cline-no"> </span>
|
|
742
|
+
<span class="cline-any cline-no"> </span>
|
|
743
|
+
<span class="cline-any cline-no"> </span>
|
|
744
|
+
<span class="cline-any cline-no"> </span>
|
|
745
|
+
<span class="cline-any cline-no"> </span>
|
|
746
|
+
<span class="cline-any cline-no"> </span>
|
|
747
|
+
<span class="cline-any cline-no"> </span>
|
|
748
|
+
<span class="cline-any cline-no"> </span>
|
|
749
|
+
<span class="cline-any cline-no"> </span>
|
|
750
|
+
<span class="cline-any cline-no"> </span>
|
|
751
|
+
<span class="cline-any cline-no"> </span>
|
|
752
|
+
<span class="cline-any cline-no"> </span>
|
|
753
|
+
<span class="cline-any cline-no"> </span>
|
|
754
|
+
<span class="cline-any cline-no"> </span>
|
|
755
|
+
<span class="cline-any cline-no"> </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></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" >/**<span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" ></span></span></span>
|
|
759
|
+
<span class="cstat-no" title="statement not covered" > * HSuite Native Connect</span>
|
|
760
|
+
<span class="cstat-no" title="statement not covered" > * Copyright 2024-2025 HSuite (https://hsuite.finance)</span>
|
|
761
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
762
|
+
<span class="cstat-no" title="statement not covered" > * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0</span>
|
|
763
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
764
|
+
<span class="cstat-no" title="statement not covered" > * This file is part of HSuite Native Connect. For commercial licensing,</span>
|
|
765
|
+
<span class="cstat-no" title="statement not covered" > * visit https://hsuite.finance/licensing</span>
|
|
766
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
767
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
768
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
769
|
+
<span class="cstat-no" title="statement not covered" > * @file High-level transaction service with automatic state management.</span>
|
|
770
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
771
|
+
<span class="cstat-no" title="statement not covered" > * @module services/transaction</span>
|
|
772
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
773
|
+
<span class="cstat-no" title="statement not covered" > * @description</span>
|
|
774
|
+
<span class="cstat-no" title="statement not covered" > * TransactionService provides simplified methods for common transaction operations</span>
|
|
775
|
+
<span class="cstat-no" title="statement not covered" > * with built-in state management, error handling, and UI feedback. It wraps</span>
|
|
776
|
+
<span class="cstat-no" title="statement not covered" > * UnifiedWalletService operations with additional convenience features.</span>
|
|
777
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
778
|
+
<span class="cstat-no" title="statement not covered" > * **Key Features:**</span>
|
|
779
|
+
<span class="cstat-no" title="statement not covered" > * - Automatic processing state tracking via Angular signals</span>
|
|
780
|
+
<span class="cstat-no" title="statement not covered" > * - Toast notifications for success and error states</span>
|
|
781
|
+
<span class="cstat-no" title="statement not covered" > * - Error propagation with proper error types</span>
|
|
782
|
+
<span class="cstat-no" title="statement not covered" > * - Result and error state tracking for UI binding</span>
|
|
783
|
+
<span class="cstat-no" title="statement not covered" > * - Support for batch transactions</span>
|
|
784
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
785
|
+
<span class="cstat-no" title="statement not covered" > * **Signal-based State:**</span>
|
|
786
|
+
<span class="cstat-no" title="statement not covered" > * - `isProcessing()` - True while a transaction is in progress</span>
|
|
787
|
+
<span class="cstat-no" title="statement not covered" > * - `lastResult()` - The result of the last successful transaction</span>
|
|
788
|
+
<span class="cstat-no" title="statement not covered" > * - `lastError()` - The error from the last failed transaction</span>
|
|
789
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
790
|
+
<span class="cstat-no" title="statement not covered" > * @Component({</span>
|
|
791
|
+
<span class="cstat-no" title="statement not covered" > * template: `</span>
|
|
792
|
+
<span class="cstat-no" title="statement not covered" > * <button [disabled]="txService.isProcessing()" (click)="send()"></span>
|
|
793
|
+
<span class="cstat-no" title="statement not covered" > * {{ txService.isProcessing() ? 'Processing...' : 'Send' }}</span>
|
|
794
|
+
<span class="cstat-no" title="statement not covered" > * </button></span>
|
|
795
|
+
<span class="cstat-no" title="statement not covered" > * `</span>
|
|
796
|
+
<span class="cstat-no" title="statement not covered" > * })</span>
|
|
797
|
+
<span class="cstat-no" title="statement not covered" > * export class MyComponent {</span>
|
|
798
|
+
<span class="cstat-no" title="statement not covered" > * txService = inject(TransactionService);</span>
|
|
799
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
800
|
+
<span class="cstat-no" title="statement not covered" > * async send() {</span>
|
|
801
|
+
<span class="cstat-no" title="statement not covered" > * const result = await this.txService.signAndSubmit(payload);</span>
|
|
802
|
+
<span class="cstat-no" title="statement not covered" > * console.log('Transaction ID:', result.transactionId);</span>
|
|
803
|
+
<span class="cstat-no" title="statement not covered" > * }</span>
|
|
804
|
+
<span class="cstat-no" title="statement not covered" > * }</span>
|
|
805
|
+
<span class="cstat-no" title="statement not covered" > * ```</span>
|
|
806
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
807
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
808
|
+
<span class="cstat-no" title="statement not covered" >import { Injectable, inject, signal, type Signal, type WritableSignal } from '@angular/core';</span>
|
|
809
|
+
<span class="cstat-no" title="statement not covered" >import { getLogger } from '@hsuite/native-connect-sdk';</span>
|
|
810
|
+
<span class="cstat-no" title="statement not covered" >import { ToastController } from '@ionic/angular/standalone';</span>
|
|
811
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
812
|
+
<span class="cstat-no" title="statement not covered" >import type { SignResult, SubmitResult } from '../providers/base-wallet-provider';</span>
|
|
813
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
814
|
+
<span class="cstat-no" title="statement not covered" >import { UnifiedWalletService } from './unified-wallet.service';</span>
|
|
815
|
+
<span class="cstat-no" title="statement not covered" >import { WalletEventBus } from './wallet-event-bus.service';</span>
|
|
816
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
817
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
818
|
+
<span class="cstat-no" title="statement not covered" >const logger = getLogger().scoped?.('TransactionService') ?? getLogger();</span>
|
|
819
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
820
|
+
<span class="cstat-no" title="statement not covered" >/**</span>
|
|
821
|
+
<span class="cstat-no" title="statement not covered" > * High-level transaction service with automatic state management.</span>
|
|
822
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
823
|
+
<span class="cstat-no" title="statement not covered" > * @service TransactionService</span>
|
|
824
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
825
|
+
<span class="cstat-no" title="statement not covered" > * @description</span>
|
|
826
|
+
<span class="cstat-no" title="statement not covered" > * Simplifies common transaction operations with built-in features:</span>
|
|
827
|
+
<span class="cstat-no" title="statement not covered" > * - Automatic processing state management via Angular signals</span>
|
|
828
|
+
<span class="cstat-no" title="statement not covered" > * - Error propagation with toast notifications</span>
|
|
829
|
+
<span class="cstat-no" title="statement not covered" > * - Event emission for tracking and debugging</span>
|
|
830
|
+
<span class="cstat-no" title="statement not covered" > * - Signal-based reactive state (modern Angular pattern)</span>
|
|
831
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
832
|
+
<span class="cstat-no" title="statement not covered" > * This service is the recommended way to perform transactions in dApps,</span>
|
|
833
|
+
<span class="cstat-no" title="statement not covered" > * as it handles all the boilerplate around state management and user feedback.</span>
|
|
834
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
835
|
+
<span class="cstat-no" title="statement not covered" > * @providedIn root</span>
|
|
836
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
837
|
+
<span class="cstat-no" title="statement not covered" >@Injectable({ providedIn: 'root' })</span>
|
|
838
|
+
<span class="cstat-no" title="statement not covered" >export class TransactionService {</span>
|
|
839
|
+
<span class="cstat-no" title="statement not covered" > private readonly walletService = inject(UnifiedWalletService);</span>
|
|
840
|
+
<span class="cstat-no" title="statement not covered" > private readonly eventBus = inject(WalletEventBus);</span>
|
|
841
|
+
<span class="cstat-no" title="statement not covered" > private readonly toastController = inject(ToastController);</span>
|
|
842
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
843
|
+
<span class="cstat-no" title="statement not covered" > // Internal writable signals for state management</span>
|
|
844
|
+
<span class="cstat-no" title="statement not covered" > private readonly _isProcessing: WritableSignal<boolean> = signal(false);</span>
|
|
845
|
+
<span class="cstat-no" title="statement not covered" > private readonly _lastResult: WritableSignal<unknown> = signal(null);</span>
|
|
846
|
+
<span class="cstat-no" title="statement not covered" > private readonly _lastError: WritableSignal<Error | null> = signal(null);</span>
|
|
847
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
848
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
849
|
+
<span class="cstat-no" title="statement not covered" > * Signal indicating if a transaction is currently processing</span>
|
|
850
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
851
|
+
<span class="cstat-no" title="statement not covered" > readonly isProcessing: Signal<boolean> = this._isProcessing.asReadonly();</span>
|
|
852
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
853
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
854
|
+
<span class="cstat-no" title="statement not covered" > * Signal of the last transaction result</span>
|
|
855
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
856
|
+
<span class="cstat-no" title="statement not covered" > readonly lastResult: Signal<unknown> = this._lastResult.asReadonly();</span>
|
|
857
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
858
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
859
|
+
<span class="cstat-no" title="statement not covered" > * Signal of the last error</span>
|
|
860
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
861
|
+
<span class="cstat-no" title="statement not covered" > readonly lastError: Signal<Error | null> = this._lastError.asReadonly();</span>
|
|
862
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
863
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
864
|
+
<span class="cstat-no" title="statement not covered" > * Sign a transaction</span>
|
|
865
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
866
|
+
<span class="cstat-no" title="statement not covered" > * Automatically handles:</span>
|
|
867
|
+
<span class="cstat-no" title="statement not covered" > * - Processing state</span>
|
|
868
|
+
<span class="cstat-no" title="statement not covered" > * - Error propagation</span>
|
|
869
|
+
<span class="cstat-no" title="statement not covered" > * - Success toast notification</span>
|
|
870
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
871
|
+
<span class="cstat-no" title="statement not covered" > * @param payload - Transaction payload (base64 or transaction bytes)</span>
|
|
872
|
+
<span class="cstat-no" title="statement not covered" > * @returns Sign result</span>
|
|
873
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
874
|
+
<span class="cstat-no" title="statement not covered" > async signTransaction(payload: string): Promise<SignResult> {</span>
|
|
875
|
+
<span class="cstat-no" title="statement not covered" > return this.executeTransaction(async () => {</span>
|
|
876
|
+
<span class="cstat-no" title="statement not covered" > const result = (await this.walletService.signTransaction(payload)) as SignResult;</span>
|
|
877
|
+
<span class="cstat-no" title="statement not covered" > logger.info('Transaction signed', {</span>
|
|
878
|
+
<span class="cstat-no" title="statement not covered" > hasSignature: !!(result as { signedTransaction?: string }).signedTransaction,</span>
|
|
879
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
880
|
+
<span class="cstat-no" title="statement not covered" > await this.showSuccessToast(</span>
|
|
881
|
+
<span class="cstat-no" title="statement not covered" > 'Transaction Signed',</span>
|
|
882
|
+
<span class="cstat-no" title="statement not covered" > 'Your transaction has been signed successfully.',</span>
|
|
883
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
884
|
+
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
885
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
886
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
887
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
888
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
889
|
+
<span class="cstat-no" title="statement not covered" > * Submit a transaction</span>
|
|
890
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
891
|
+
<span class="cstat-no" title="statement not covered" > * Automatically handles:</span>
|
|
892
|
+
<span class="cstat-no" title="statement not covered" > * - Processing state</span>
|
|
893
|
+
<span class="cstat-no" title="statement not covered" > * - Error propagation</span>
|
|
894
|
+
<span class="cstat-no" title="statement not covered" > * - Success toast notification</span>
|
|
895
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
896
|
+
<span class="cstat-no" title="statement not covered" > * @param payload - Transaction payload (base64 or transaction bytes)</span>
|
|
897
|
+
<span class="cstat-no" title="statement not covered" > * @returns Submit result</span>
|
|
898
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
899
|
+
<span class="cstat-no" title="statement not covered" > async submitTransaction(payload: string): Promise<SubmitResult> {</span>
|
|
900
|
+
<span class="cstat-no" title="statement not covered" > return this.executeTransaction(async () => {</span>
|
|
901
|
+
<span class="cstat-no" title="statement not covered" > const result = (await this.walletService.submitTransaction(payload)) as SubmitResult;</span>
|
|
902
|
+
<span class="cstat-no" title="statement not covered" > logger.info('Transaction submitted', { transactionId: result.transactionId });</span>
|
|
903
|
+
<span class="cstat-no" title="statement not covered" > await this.showSuccessToast(</span>
|
|
904
|
+
<span class="cstat-no" title="statement not covered" > 'Transaction Submitted',</span>
|
|
905
|
+
<span class="cstat-no" title="statement not covered" > `Transaction ID: ${result.transactionId || 'Success'}`,</span>
|
|
906
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
907
|
+
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
908
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
909
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
910
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
911
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
912
|
+
<span class="cstat-no" title="statement not covered" > * Sign and submit a transaction in one call</span>
|
|
913
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
914
|
+
<span class="cstat-no" title="statement not covered" > * Uses the wallet's native sign+submit method when available (e.g., WalletConnect's signAndExecuteTransaction).</span>
|
|
915
|
+
<span class="cstat-no" title="statement not covered" > * This prevents double prompts and provides a better UX.</span>
|
|
916
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
917
|
+
<span class="cstat-no" title="statement not covered" > * @param payload - Transaction payload</span>
|
|
918
|
+
<span class="cstat-no" title="statement not covered" > * @returns Submit result</span>
|
|
919
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
920
|
+
<span class="cstat-no" title="statement not covered" > async signAndSubmit(payload: string): Promise<SubmitResult> {</span>
|
|
921
|
+
<span class="cstat-no" title="statement not covered" > return this.executeTransaction(async () => {</span>
|
|
922
|
+
<span class="cstat-no" title="statement not covered" > // Use the wallet's signAndExecuteTransaction method directly</span>
|
|
923
|
+
<span class="cstat-no" title="statement not covered" > // This uses hedera_signAndExecuteTransaction for WalletConnect (one prompt!)</span>
|
|
924
|
+
<span class="cstat-no" title="statement not covered" > const result = (await this.walletService.signAndExecuteTransaction(payload)) as SubmitResult;</span>
|
|
925
|
+
<span class="cstat-no" title="statement not covered" > logger.info('Transaction signed and submitted', { transactionId: result.transactionId });</span>
|
|
926
|
+
<span class="cstat-no" title="statement not covered" > await this.showSuccessToast(</span>
|
|
927
|
+
<span class="cstat-no" title="statement not covered" > 'Transaction Complete',</span>
|
|
928
|
+
<span class="cstat-no" title="statement not covered" > `Transaction ID: ${result.transactionId || 'Success'}`,</span>
|
|
929
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
930
|
+
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
931
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
932
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
933
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
934
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
935
|
+
<span class="cstat-no" title="statement not covered" > * Submit a batch transaction</span>
|
|
936
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
937
|
+
<span class="cstat-no" title="statement not covered" > * Batch transactions require unsigned inner transactions that the wallet will sign.</span>
|
|
938
|
+
<span class="cstat-no" title="statement not covered" > * The wallet signs each inner transaction with the account's key, then builds and</span>
|
|
939
|
+
<span class="cstat-no" title="statement not covered" > * executes the BatchTransaction.</span>
|
|
940
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
941
|
+
<span class="cstat-no" title="statement not covered" > * @param options - Batch transaction options</span>
|
|
942
|
+
<span class="cstat-no" title="statement not covered" > * @param options.batchKey - Public key for batch (typically account's public key)</span>
|
|
943
|
+
<span class="cstat-no" title="statement not covered" > * @param options.innerTransactions - Array of unsigned inner transactions</span>
|
|
944
|
+
<span class="cstat-no" title="statement not covered" > * @returns Submit result</span>
|
|
945
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
946
|
+
<span class="cstat-no" title="statement not covered" > async submitBatchTransaction(options: {</span>
|
|
947
|
+
<span class="cstat-no" title="statement not covered" > batchKey: string;</span>
|
|
948
|
+
<span class="cstat-no" title="statement not covered" > innerTransactions: Array<{ payload: string; description?: string }>;</span>
|
|
949
|
+
<span class="cstat-no" title="statement not covered" > }): Promise<SubmitResult> {</span>
|
|
950
|
+
<span class="cstat-no" title="statement not covered" > return this.executeTransaction(async () => {</span>
|
|
951
|
+
<span class="cstat-no" title="statement not covered" > const result = (await this.walletService.submitTransaction('', {</span>
|
|
952
|
+
<span class="cstat-no" title="statement not covered" > isBatch: true,</span>
|
|
953
|
+
<span class="cstat-no" title="statement not covered" > batchKey: options.batchKey,</span>
|
|
954
|
+
<span class="cstat-no" title="statement not covered" > innerTransactions: options.innerTransactions,</span>
|
|
955
|
+
<span class="cstat-no" title="statement not covered" > })) as SubmitResult;</span>
|
|
956
|
+
<span class="cstat-no" title="statement not covered" > logger.info('Batch transaction submitted', { transactionId: result.transactionId });</span>
|
|
957
|
+
<span class="cstat-no" title="statement not covered" > await this.showSuccessToast(</span>
|
|
958
|
+
<span class="cstat-no" title="statement not covered" > 'Batch Transaction Complete',</span>
|
|
959
|
+
<span class="cstat-no" title="statement not covered" > `Transaction ID: ${result.transactionId || 'Success'}`,</span>
|
|
960
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
961
|
+
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
962
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
963
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
964
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
965
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
966
|
+
<span class="cstat-no" title="statement not covered" > * Sign a message</span>
|
|
967
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
968
|
+
<span class="cstat-no" title="statement not covered" > * @param message - Message to sign</span>
|
|
969
|
+
<span class="cstat-no" title="statement not covered" > * @returns Sign result with signature</span>
|
|
970
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
971
|
+
<span class="cstat-no" title="statement not covered" > async signMessage(message: string): Promise<SignResult> {</span>
|
|
972
|
+
<span class="cstat-no" title="statement not covered" > return this.executeTransaction(async () => {</span>
|
|
973
|
+
<span class="cstat-no" title="statement not covered" > const result = (await this.walletService.signMessage(message)) as SignResult;</span>
|
|
974
|
+
<span class="cstat-no" title="statement not covered" > logger.info('Message signed', { hasSignature: !!result.signature });</span>
|
|
975
|
+
<span class="cstat-no" title="statement not covered" > await this.showSuccessToast('Message Signed', 'Your message has been signed successfully.');</span>
|
|
976
|
+
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
977
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
978
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
979
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
980
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
981
|
+
<span class="cstat-no" title="statement not covered" > * Show a success toast notification</span>
|
|
982
|
+
<span class="cstat-no" title="statement not covered" > * Uses cssClass-only styling (no Ionic color property) for theme compatibility.</span>
|
|
983
|
+
<span class="cstat-no" title="statement not covered" > * @param header</span>
|
|
984
|
+
<span class="cstat-no" title="statement not covered" > * @param message</span>
|
|
985
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
986
|
+
<span class="cstat-no" title="statement not covered" > private async showSuccessToast(header: string, message: string): Promise<void> {</span>
|
|
987
|
+
<span class="cstat-no" title="statement not covered" > const toast = await this.toastController.create({</span>
|
|
988
|
+
<span class="cstat-no" title="statement not covered" > header,</span>
|
|
989
|
+
<span class="cstat-no" title="statement not covered" > message,</span>
|
|
990
|
+
<span class="cstat-no" title="statement not covered" > icon: 'checkmark-circle-outline',</span>
|
|
991
|
+
<span class="cstat-no" title="statement not covered" > cssClass: 'toast-success toast-compact',</span>
|
|
992
|
+
<span class="cstat-no" title="statement not covered" > duration: 4000,</span>
|
|
993
|
+
<span class="cstat-no" title="statement not covered" > position: 'top',</span>
|
|
994
|
+
<span class="cstat-no" title="statement not covered" > buttons: [{ icon: 'close', role: 'cancel' }],</span>
|
|
995
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
996
|
+
<span class="cstat-no" title="statement not covered" > await toast.present();</span>
|
|
997
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
998
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
999
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
1000
|
+
<span class="cstat-no" title="statement not covered" > * Show an error toast notification</span>
|
|
1001
|
+
<span class="cstat-no" title="statement not covered" > * Uses cssClass-only styling (no Ionic color property) for theme compatibility.</span>
|
|
1002
|
+
<span class="cstat-no" title="statement not covered" > * @param header</span>
|
|
1003
|
+
<span class="cstat-no" title="statement not covered" > * @param message</span>
|
|
1004
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1005
|
+
<span class="cstat-no" title="statement not covered" > private async showErrorToast(header: string, message: string): Promise<void> {</span>
|
|
1006
|
+
<span class="cstat-no" title="statement not covered" > const toast = await this.toastController.create({</span>
|
|
1007
|
+
<span class="cstat-no" title="statement not covered" > header,</span>
|
|
1008
|
+
<span class="cstat-no" title="statement not covered" > message,</span>
|
|
1009
|
+
<span class="cstat-no" title="statement not covered" > icon: 'close-circle-outline',</span>
|
|
1010
|
+
<span class="cstat-no" title="statement not covered" > cssClass: 'toast-danger toast-compact',</span>
|
|
1011
|
+
<span class="cstat-no" title="statement not covered" > duration: 6000,</span>
|
|
1012
|
+
<span class="cstat-no" title="statement not covered" > position: 'top',</span>
|
|
1013
|
+
<span class="cstat-no" title="statement not covered" > buttons: [{ icon: 'close', role: 'cancel' }],</span>
|
|
1014
|
+
<span class="cstat-no" title="statement not covered" > });</span>
|
|
1015
|
+
<span class="cstat-no" title="statement not covered" > await toast.present();</span>
|
|
1016
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1017
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1018
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
1019
|
+
<span class="cstat-no" title="statement not covered" > * Execute a transaction with automatic state management</span>
|
|
1020
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
1021
|
+
<span class="cstat-no" title="statement not covered" > * Internal helper that wraps transaction operations with:</span>
|
|
1022
|
+
<span class="cstat-no" title="statement not covered" > * - Processing state updates</span>
|
|
1023
|
+
<span class="cstat-no" title="statement not covered" > * - Error handling with toast notifications</span>
|
|
1024
|
+
<span class="cstat-no" title="statement not covered" > * - Result tracking</span>
|
|
1025
|
+
<span class="cstat-no" title="statement not covered" > * @param operation</span>
|
|
1026
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1027
|
+
<span class="cstat-no" title="statement not covered" > private async executeTransaction<T>(operation: () => Promise<T>): Promise<T> {</span>
|
|
1028
|
+
<span class="cstat-no" title="statement not covered" > // Set processing state</span>
|
|
1029
|
+
<span class="cstat-no" title="statement not covered" > this.setProcessing(true);</span>
|
|
1030
|
+
<span class="cstat-no" title="statement not covered" > this.clearError();</span>
|
|
1031
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1032
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
1033
|
+
<span class="cstat-no" title="statement not covered" > // Execute the operation</span>
|
|
1034
|
+
<span class="cstat-no" title="statement not covered" > const result = await operation();</span>
|
|
1035
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1036
|
+
<span class="cstat-no" title="statement not covered" > // Update result state</span>
|
|
1037
|
+
<span class="cstat-no" title="statement not covered" > this.setResult(result);</span>
|
|
1038
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1039
|
+
<span class="cstat-no" title="statement not covered" > return result;</span>
|
|
1040
|
+
<span class="cstat-no" title="statement not covered" > } catch (error) {</span>
|
|
1041
|
+
<span class="cstat-no" title="statement not covered" > // Update error state</span>
|
|
1042
|
+
<span class="cstat-no" title="statement not covered" > const err = error instanceof Error ? error : new Error(String(error));</span>
|
|
1043
|
+
<span class="cstat-no" title="statement not covered" > this.setError(err);</span>
|
|
1044
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1045
|
+
<span class="cstat-no" title="statement not covered" > // Show error toast</span>
|
|
1046
|
+
<span class="cstat-no" title="statement not covered" > await this.showErrorToast(</span>
|
|
1047
|
+
<span class="cstat-no" title="statement not covered" > 'Transaction Failed',</span>
|
|
1048
|
+
<span class="cstat-no" title="statement not covered" > err.message || 'An error occurred during the transaction.',</span>
|
|
1049
|
+
<span class="cstat-no" title="statement not covered" > );</span>
|
|
1050
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1051
|
+
<span class="cstat-no" title="statement not covered" > // Re-throw for caller to handle</span>
|
|
1052
|
+
<span class="cstat-no" title="statement not covered" > throw err;</span>
|
|
1053
|
+
<span class="cstat-no" title="statement not covered" > } finally {</span>
|
|
1054
|
+
<span class="cstat-no" title="statement not covered" > // Clear processing state</span>
|
|
1055
|
+
<span class="cstat-no" title="statement not covered" > this.setProcessing(false);</span>
|
|
1056
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1057
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1058
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1059
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
1060
|
+
<span class="cstat-no" title="statement not covered" > * Update processing state</span>
|
|
1061
|
+
<span class="cstat-no" title="statement not covered" > * @param processing</span>
|
|
1062
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1063
|
+
<span class="cstat-no" title="statement not covered" > private setProcessing(processing: boolean): void {</span>
|
|
1064
|
+
<span class="cstat-no" title="statement not covered" > this._isProcessing.set(processing);</span>
|
|
1065
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1066
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1067
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
1068
|
+
<span class="cstat-no" title="statement not covered" > * Update result state</span>
|
|
1069
|
+
<span class="cstat-no" title="statement not covered" > * @param result</span>
|
|
1070
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1071
|
+
<span class="cstat-no" title="statement not covered" > private setResult(result: unknown): void {</span>
|
|
1072
|
+
<span class="cstat-no" title="statement not covered" > this._lastResult.set(result);</span>
|
|
1073
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1074
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1075
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
1076
|
+
<span class="cstat-no" title="statement not covered" > * Update error state</span>
|
|
1077
|
+
<span class="cstat-no" title="statement not covered" > * @param error</span>
|
|
1078
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1079
|
+
<span class="cstat-no" title="statement not covered" > private setError(error: Error): void {</span>
|
|
1080
|
+
<span class="cstat-no" title="statement not covered" > this._lastError.set(error);</span>
|
|
1081
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1082
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1083
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
1084
|
+
<span class="cstat-no" title="statement not covered" > * Clear error state</span>
|
|
1085
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1086
|
+
<span class="cstat-no" title="statement not covered" > private clearError(): void {</span>
|
|
1087
|
+
<span class="cstat-no" title="statement not covered" > this._lastError.set(null);</span>
|
|
1088
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1089
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
1090
|
+
<span class="cstat-no" title="statement not covered" > /**</span>
|
|
1091
|
+
<span class="cstat-no" title="statement not covered" > * Resets all transaction state to initial values.</span>
|
|
1092
|
+
<span class="cstat-no" title="statement not covered" > *</span>
|
|
1093
|
+
<span class="cstat-no" title="statement not covered" > * @description</span>
|
|
1094
|
+
<span class="cstat-no" title="statement not covered" > * Clears the processing flag, last result, and last error.</span>
|
|
1095
|
+
<span class="cstat-no" title="statement not covered" > * Useful when navigating away from a transaction page or</span>
|
|
1096
|
+
<span class="cstat-no" title="statement not covered" > * starting a fresh transaction flow.</span>
|
|
1097
|
+
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1098
|
+
<span class="cstat-no" title="statement not covered" > resetState(): void {</span>
|
|
1099
|
+
<span class="cstat-no" title="statement not covered" > this.setProcessing(false);</span>
|
|
1100
|
+
<span class="cstat-no" title="statement not covered" > this.setResult(null);</span>
|
|
1101
|
+
<span class="cstat-no" title="statement not covered" > this.clearError();</span>
|
|
1102
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1103
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1104
|
+
</pre></td></tr></table></pre>
|
|
1105
|
+
|
|
1106
|
+
<div class='push'></div><!-- for sticky footer -->
|
|
1107
|
+
</div><!-- /wrapper -->
|
|
1108
|
+
<div class='footer quiet pad2 space-top1 center small'>
|
|
1109
|
+
Code coverage generated by
|
|
1110
|
+
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1111
|
+
at 2026-06-02T14:30:38.257Z
|
|
1112
|
+
</div>
|
|
1113
|
+
<script src="../../prettify.js"></script>
|
|
1114
|
+
<script>
|
|
1115
|
+
window.onload = function () {
|
|
1116
|
+
prettyPrint();
|
|
1117
|
+
};
|
|
1118
|
+
</script>
|
|
1119
|
+
<script src="../../sorter.js"></script>
|
|
1120
|
+
<script src="../../block-navigation.js"></script>
|
|
1121
|
+
</body>
|
|
1122
|
+
</html>
|
|
1123
|
+
|