@hsuite/native-connect-angular 1.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/coverage/coverage-summary.json +53 -49
- package/coverage/index.html +100 -100
- package/coverage/lcov-report/index.html +100 -100
- package/coverage/lcov-report/lib/components/account-selector/account-actions/account-actions.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-actions/index.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-filter/account-filter.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-filter/index.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-formatting.service.ts.html +13 -19
- package/coverage/lcov-report/lib/components/account-selector/account-grouping.service.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-list/account-list.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-list/index.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-selector.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/account-selector.service.ts.html +1 -1
- package/coverage/lcov-report/lib/components/account-selector/index.html +5 -5
- package/coverage/lcov-report/lib/components/wallet-account-display/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-account-display/wallet-account-display.component.ts.html +10 -10
- package/coverage/lcov-report/lib/components/wallet-connect-button/index.html +21 -21
- package/coverage/lcov-report/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +475 -451
- package/coverage/lcov-report/lib/components/wallet-connect-prompt/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connected-guard/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +148 -148
- package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/index.html +17 -17
- package/coverage/lcov-report/lib/components/wallet-connection-modal/index.html +21 -21
- package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/index.html +17 -17
- package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +838 -838
- package/coverage/lcov-report/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +1230 -987
- package/coverage/lcov-report/lib/components/wallet-session-display/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-session-display/wallet-session-display.component.ts.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-transaction-status/index.html +1 -1
- package/coverage/lcov-report/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +1 -1
- package/coverage/lcov-report/lib/directives/index.html +1 -1
- package/coverage/lcov-report/lib/directives/wallet-connected.directive.ts.html +1 -1
- package/coverage/lcov-report/lib/directives/wallet-context.directive.ts.html +1 -1
- package/coverage/lcov-report/lib/directives/wallet-events.directive.ts.html +1 -1
- package/coverage/lcov-report/lib/hsuite-wallet.module.ts.html +1 -1
- package/coverage/lcov-report/lib/index.html +1 -1
- package/coverage/lcov-report/lib/models/connection-config.model.ts.html +1 -1
- package/coverage/lcov-report/lib/models/index.html +7 -7
- package/coverage/lcov-report/lib/models/provider-types.ts.html +11 -5
- package/coverage/lcov-report/lib/providers/base-wallet-provider.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/hsuite-native/channel-client.service.ts.html +9 -6
- package/coverage/lcov-report/lib/providers/hsuite-native/index.html +10 -10
- package/coverage/lcov-report/lib/providers/hsuite-native-provider.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/index.html +1 -1
- package/coverage/lcov-report/lib/providers/p2p-native/index.html +7 -7
- package/coverage/lcov-report/lib/providers/p2p-native/p2p-native.provider.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/p2p-native/p2p-session-manager.ts.html +7 -4
- package/coverage/lcov-report/lib/providers/wallet-error-handler.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/core/index.html +10 -10
- package/coverage/lcov-report/lib/providers/walletconnect/core/session-health.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-provider.ts.html +10 -7
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/signers/hedera-signer.ts.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/signers/index.html +1 -1
- package/coverage/lcov-report/lib/providers/walletconnect/signers/signer-factory.ts.html +49 -49
- package/coverage/lcov-report/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1 -1
- package/coverage/lcov-report/lib/services/hsuite-auth.interceptor.ts.html +568 -0
- package/coverage/lcov-report/lib/services/index.html +50 -20
- package/coverage/lcov-report/lib/services/logger.service.ts.html +4 -4
- package/coverage/lcov-report/lib/services/smart-session.service.ts.html +1264 -0
- package/coverage/lcov-report/lib/services/transaction-builders/active-account-source.ts.html +250 -0
- package/coverage/lcov-report/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1 -1
- package/coverage/lcov-report/lib/services/transaction-builders/hedera-amount-utils.ts.html +1 -1
- package/coverage/lcov-report/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +318 -318
- package/coverage/lcov-report/lib/services/transaction-builders/index.html +24 -9
- package/coverage/lcov-report/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +1 -1
- package/coverage/lcov-report/lib/services/transaction.service.ts.html +7 -10
- package/coverage/lcov-report/lib/services/unified-wallet.service.ts.html +9 -12
- package/coverage/lcov-report/lib/services/wallet-context.service.ts.html +1 -1
- package/coverage/lcov-report/lib/services/wallet-event-bus.service.ts.html +1 -1
- package/coverage/lcov-report/lib/services/wallet-providers.service.ts.html +4 -7
- package/coverage/lcov-report/lib/transports/chrome-extension-transport.ts.html +1 -1
- package/coverage/lcov-report/lib/transports/index.html +1 -1
- package/coverage/lcov-report/lib/utils/index.html +36 -21
- package/coverage/lcov-report/lib/utils/ledger-icons.util.ts.html +254 -161
- package/coverage/lcov-report/lib/utils/ledger-ui-registry.ts.html +676 -0
- package/coverage/lcov.info +3236 -2122
- package/coverage/lib/components/account-selector/account-actions/account-actions.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-actions/index.html +1 -1
- package/coverage/lib/components/account-selector/account-filter/account-filter.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-filter/index.html +1 -1
- package/coverage/lib/components/account-selector/account-formatting.service.ts.html +13 -19
- package/coverage/lib/components/account-selector/account-grouping.service.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-list/account-list.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-list/index.html +1 -1
- package/coverage/lib/components/account-selector/account-selector.component.ts.html +1 -1
- package/coverage/lib/components/account-selector/account-selector.service.ts.html +1 -1
- package/coverage/lib/components/account-selector/index.html +5 -5
- package/coverage/lib/components/wallet-account-display/index.html +1 -1
- package/coverage/lib/components/wallet-account-display/wallet-account-display.component.ts.html +10 -10
- package/coverage/lib/components/wallet-connect-button/index.html +21 -21
- package/coverage/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +475 -451
- package/coverage/lib/components/wallet-connect-prompt/index.html +1 -1
- package/coverage/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +1 -1
- package/coverage/lib/components/wallet-connected-guard/index.html +1 -1
- package/coverage/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +1 -1
- package/coverage/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +148 -148
- package/coverage/lib/components/wallet-connection-modal/connection-method-step/index.html +17 -17
- package/coverage/lib/components/wallet-connection-modal/index.html +21 -21
- package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/index.html +17 -17
- package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +838 -838
- package/coverage/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +1230 -987
- package/coverage/lib/components/wallet-session-display/index.html +1 -1
- package/coverage/lib/components/wallet-session-display/wallet-session-display.component.ts.html +1 -1
- package/coverage/lib/components/wallet-transaction-status/index.html +1 -1
- package/coverage/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +1 -1
- package/coverage/lib/directives/index.html +1 -1
- package/coverage/lib/directives/wallet-connected.directive.ts.html +1 -1
- package/coverage/lib/directives/wallet-context.directive.ts.html +1 -1
- package/coverage/lib/directives/wallet-events.directive.ts.html +1 -1
- package/coverage/lib/hsuite-wallet.module.ts.html +1 -1
- package/coverage/lib/index.html +1 -1
- package/coverage/lib/models/connection-config.model.ts.html +1 -1
- package/coverage/lib/models/index.html +7 -7
- package/coverage/lib/models/provider-types.ts.html +11 -5
- package/coverage/lib/providers/base-wallet-provider.ts.html +1 -1
- package/coverage/lib/providers/hsuite-native/channel-client.service.ts.html +9 -6
- package/coverage/lib/providers/hsuite-native/index.html +10 -10
- package/coverage/lib/providers/hsuite-native-provider.ts.html +1 -1
- package/coverage/lib/providers/index.html +1 -1
- package/coverage/lib/providers/p2p-native/index.html +7 -7
- package/coverage/lib/providers/p2p-native/p2p-native.provider.ts.html +1 -1
- package/coverage/lib/providers/p2p-native/p2p-session-manager.ts.html +7 -4
- package/coverage/lib/providers/wallet-error-handler.ts.html +1 -1
- package/coverage/lib/providers/walletconnect/core/index.html +10 -10
- package/coverage/lib/providers/walletconnect/core/session-health.ts.html +1 -1
- package/coverage/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1 -1
- package/coverage/lib/providers/walletconnect/core/walletconnect-provider.ts.html +10 -7
- package/coverage/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +1 -1
- package/coverage/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +1 -1
- package/coverage/lib/providers/walletconnect/signers/hedera-signer.ts.html +1 -1
- package/coverage/lib/providers/walletconnect/signers/index.html +1 -1
- package/coverage/lib/providers/walletconnect/signers/signer-factory.ts.html +49 -49
- package/coverage/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1 -1
- package/coverage/lib/services/hsuite-auth.interceptor.ts.html +568 -0
- package/coverage/lib/services/index.html +50 -20
- package/coverage/lib/services/logger.service.ts.html +4 -4
- package/coverage/lib/services/smart-session.service.ts.html +1264 -0
- package/coverage/lib/services/transaction-builders/active-account-source.ts.html +250 -0
- package/coverage/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1 -1
- package/coverage/lib/services/transaction-builders/hedera-amount-utils.ts.html +1 -1
- package/coverage/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +318 -318
- package/coverage/lib/services/transaction-builders/index.html +24 -9
- package/coverage/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +1 -1
- package/coverage/lib/services/transaction.service.ts.html +7 -10
- package/coverage/lib/services/unified-wallet.service.ts.html +9 -12
- package/coverage/lib/services/wallet-context.service.ts.html +1 -1
- package/coverage/lib/services/wallet-event-bus.service.ts.html +1 -1
- package/coverage/lib/services/wallet-providers.service.ts.html +4 -7
- package/coverage/lib/transports/chrome-extension-transport.ts.html +1 -1
- package/coverage/lib/transports/index.html +1 -1
- package/coverage/lib/utils/index.html +36 -21
- package/coverage/lib/utils/ledger-icons.util.ts.html +254 -161
- package/coverage/lib/utils/ledger-ui-registry.ts.html +676 -0
- package/dist/fesm2022/hsuite-native-connect-angular.mjs +939 -328
- package/dist/fesm2022/hsuite-native-connect-angular.mjs.map +1 -1
- package/dist/index.d.ts +489 -33
- package/package.json +4 -4
- package/src/index.ts +26 -0
- package/src/lib/components/account-selector/account-formatting.service.ts +8 -10
- package/src/lib/components/wallet-account-display/wallet-account-display.component.ts +9 -9
- package/src/lib/components/wallet-connect-button/wallet-connect-button.component.spec.ts +89 -0
- package/src/lib/components/wallet-connect-button/wallet-connect-button.component.ts +8 -0
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.html +1 -6
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.spec.ts +173 -0
- package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts +118 -37
- package/src/lib/models/provider-types.ts +3 -1
- package/src/lib/models/unified-account.model.ts +4 -1
- package/src/lib/providers/hsuite-native/channel-client.service.ts +1 -0
- package/src/lib/providers/p2p-native/p2p-session-manager.ts +1 -0
- package/src/lib/providers/walletconnect/core/walletconnect-provider.ts +2 -1
- package/src/lib/services/hsuite-auth.interceptor.ts +159 -0
- package/src/lib/services/smart-session.service.ts +378 -0
- package/src/lib/services/transaction-builders/active-account-source.spec.ts +75 -0
- package/src/lib/services/transaction-builders/active-account-source.ts +55 -0
- package/src/lib/services/transaction-builders/hedera-transaction-builder.service.ts +4 -4
- package/src/lib/services/transaction-builders/index.ts +1 -0
- package/src/lib/services/transaction.service.ts +7 -4
- package/src/lib/services/unified-wallet.service.spec.ts +1 -1
- package/src/lib/services/unified-wallet.service.ts +2 -3
- package/src/lib/services/wallet-providers.service.ts +0 -1
- package/src/lib/utils/index.ts +1 -0
- package/src/lib/utils/ledger-icons.util.ts +61 -30
- package/src/lib/utils/ledger-ui-registry.ts +197 -0
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">84.27% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>209/248</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">50% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>4/8</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">40% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>4/10</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">84.27% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>209/248</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line high'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -303,416 +303,440 @@
|
|
|
303
303
|
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
304
|
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
305
|
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a
|
|
307
|
-
<
|
|
308
|
-
<
|
|
309
|
-
<
|
|
310
|
-
<
|
|
311
|
-
<
|
|
312
|
-
<
|
|
313
|
-
<
|
|
314
|
-
<span class="cline-any cline-
|
|
315
|
-
<span class="cline-any cline-
|
|
316
|
-
<span class="cline-any cline-
|
|
317
|
-
<span class="cline-any cline-
|
|
318
|
-
<span class="cline-any cline-
|
|
319
|
-
<span class="cline-any cline-
|
|
320
|
-
<span class="cline-any cline-
|
|
321
|
-
<span class="cline-any cline-
|
|
322
|
-
<span class="cline-any cline-
|
|
323
|
-
<span class="cline-any cline-
|
|
324
|
-
<span class="cline-any cline-
|
|
325
|
-
<span class="cline-any cline-
|
|
326
|
-
<span class="cline-any cline-
|
|
327
|
-
<span class="cline-any cline-
|
|
328
|
-
<span class="cline-any cline-
|
|
329
|
-
<span class="cline-any cline-
|
|
330
|
-
<span class="cline-any cline-
|
|
331
|
-
<span class="cline-any cline-
|
|
332
|
-
<span class="cline-any cline-
|
|
333
|
-
<span class="cline-any cline-
|
|
334
|
-
<span class="cline-any cline-
|
|
335
|
-
<span class="cline-any cline-
|
|
336
|
-
<span class="cline-any cline-
|
|
337
|
-
<span class="cline-any cline-
|
|
338
|
-
<span class="cline-any cline-
|
|
339
|
-
<span class="cline-any cline-
|
|
340
|
-
<span class="cline-any cline-
|
|
341
|
-
<span class="cline-any cline-
|
|
342
|
-
<span class="cline-any cline-
|
|
343
|
-
<span class="cline-any cline-
|
|
344
|
-
<span class="cline-any cline-
|
|
345
|
-
<span class="cline-any cline-
|
|
346
|
-
<span class="cline-any cline-
|
|
347
|
-
<span class="cline-any cline-
|
|
348
|
-
<span class="cline-any cline-
|
|
349
|
-
<span class="cline-any cline-
|
|
350
|
-
<span class="cline-any cline-
|
|
351
|
-
<span class="cline-any cline-
|
|
352
|
-
<span class="cline-any cline-
|
|
353
|
-
<span class="cline-any cline-
|
|
354
|
-
<span class="cline-any cline-
|
|
355
|
-
<span class="cline-any cline-
|
|
356
|
-
<span class="cline-any cline-
|
|
357
|
-
<span class="cline-any cline-
|
|
358
|
-
<span class="cline-any cline-
|
|
359
|
-
<span class="cline-any cline-
|
|
360
|
-
<span class="cline-any cline-
|
|
361
|
-
<span class="cline-any cline-
|
|
362
|
-
<span class="cline-any cline-
|
|
363
|
-
<span class="cline-any cline-
|
|
364
|
-
<span class="cline-any cline-
|
|
365
|
-
<span class="cline-any cline-
|
|
366
|
-
<span class="cline-any cline-
|
|
367
|
-
<span class="cline-any cline-
|
|
368
|
-
<span class="cline-any cline-
|
|
369
|
-
<span class="cline-any cline-
|
|
370
|
-
<span class="cline-any cline-
|
|
371
|
-
<span class="cline-any cline-
|
|
372
|
-
<span class="cline-any cline-
|
|
373
|
-
<span class="cline-any cline-
|
|
374
|
-
<span class="cline-any cline-
|
|
375
|
-
<span class="cline-any cline-
|
|
376
|
-
<span class="cline-any cline-
|
|
377
|
-
<span class="cline-any cline-
|
|
378
|
-
<span class="cline-any cline-
|
|
379
|
-
<span class="cline-any cline-
|
|
380
|
-
<span class="cline-any cline-
|
|
381
|
-
<span class="cline-any cline-
|
|
382
|
-
<span class="cline-any cline-
|
|
383
|
-
<span class="cline-any cline-
|
|
384
|
-
<span class="cline-any cline-
|
|
385
|
-
<span class="cline-any cline-
|
|
386
|
-
<span class="cline-any cline-
|
|
387
|
-
<span class="cline-any cline-
|
|
388
|
-
<span class="cline-any cline-
|
|
389
|
-
<span class="cline-any cline-
|
|
390
|
-
<span class="cline-any cline-
|
|
391
|
-
<span class="cline-any cline-
|
|
392
|
-
<span class="cline-any cline-
|
|
393
|
-
<span class="cline-any cline-
|
|
394
|
-
<span class="cline-any cline-
|
|
395
|
-
<span class="cline-any cline-
|
|
396
|
-
<span class="cline-any cline-
|
|
397
|
-
<span class="cline-any cline-
|
|
398
|
-
<span class="cline-any cline-
|
|
399
|
-
<span class="cline-any cline-
|
|
400
|
-
<span class="cline-any cline-
|
|
401
|
-
<span class="cline-any cline-
|
|
402
|
-
<span class="cline-any cline-
|
|
403
|
-
<span class="cline-any cline-
|
|
404
|
-
<span class="cline-any cline-
|
|
405
|
-
<span class="cline-any cline-
|
|
406
|
-
<span class="cline-any cline-
|
|
407
|
-
<span class="cline-any cline-
|
|
408
|
-
<span class="cline-any cline-
|
|
409
|
-
<span class="cline-any cline-
|
|
410
|
-
<span class="cline-any cline-
|
|
411
|
-
<span class="cline-any cline-
|
|
412
|
-
<span class="cline-any cline-
|
|
413
|
-
<span class="cline-any cline-
|
|
414
|
-
<span class="cline-any cline-
|
|
415
|
-
<span class="cline-any cline-
|
|
416
|
-
<span class="cline-any cline-
|
|
417
|
-
<span class="cline-any cline-
|
|
418
|
-
<span class="cline-any cline-
|
|
419
|
-
<span class="cline-any cline-
|
|
420
|
-
<span class="cline-any cline-
|
|
421
|
-
<span class="cline-any cline-
|
|
422
|
-
<span class="cline-any cline-
|
|
423
|
-
<span class="cline-any cline-
|
|
424
|
-
<span class="cline-any cline-
|
|
425
|
-
<span class="cline-any cline-
|
|
426
|
-
<span class="cline-any cline-
|
|
427
|
-
<span class="cline-any cline-
|
|
428
|
-
<span class="cline-any cline-
|
|
429
|
-
<span class="cline-any cline-
|
|
430
|
-
<span class="cline-any cline-
|
|
431
|
-
<span class="cline-any cline-
|
|
432
|
-
<span class="cline-any cline-
|
|
433
|
-
<span class="cline-any cline-
|
|
434
|
-
<span class="cline-any cline-
|
|
435
|
-
<span class="cline-any cline-
|
|
436
|
-
<span class="cline-any cline-
|
|
437
|
-
<span class="cline-any cline-
|
|
438
|
-
<span class="cline-any cline-
|
|
439
|
-
<span class="cline-any cline-
|
|
440
|
-
<span class="cline-any cline-
|
|
441
|
-
<span class="cline-any cline-
|
|
442
|
-
<span class="cline-any cline-
|
|
443
|
-
<span class="cline-any cline-
|
|
444
|
-
<span class="cline-any cline-
|
|
445
|
-
<span class="cline-any cline-
|
|
446
|
-
<span class="cline-any cline-
|
|
447
|
-
<span class="cline-any cline-
|
|
448
|
-
<span class="cline-any cline-
|
|
449
|
-
<span class="cline-any cline-
|
|
450
|
-
<span class="cline-any cline-
|
|
451
|
-
<span class="cline-any cline-
|
|
452
|
-
<span class="cline-any cline-
|
|
453
|
-
<span class="cline-any cline-
|
|
454
|
-
<span class="cline-any cline-
|
|
455
|
-
<span class="cline-any cline-
|
|
456
|
-
<span class="cline-any cline-
|
|
457
|
-
<span class="cline-any cline-
|
|
458
|
-
<span class="cline-any cline-
|
|
459
|
-
<span class="cline-any cline-
|
|
460
|
-
<span class="cline-any cline-
|
|
461
|
-
<span class="cline-any cline-
|
|
462
|
-
<span class="cline-any cline-
|
|
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-
|
|
467
|
-
<span class="cline-any cline-
|
|
468
|
-
<span class="cline-any cline-
|
|
469
|
-
<span class="cline-any cline-
|
|
470
|
-
<span class="cline-any cline-
|
|
471
|
-
<span class="cline-any cline-
|
|
472
|
-
<span class="cline-any cline-
|
|
473
|
-
<span class="cline-any cline-
|
|
474
|
-
<span class="cline-any cline-
|
|
475
|
-
<span class="cline-any cline-
|
|
476
|
-
<span class="cline-any cline-
|
|
477
|
-
<span class="cline-any cline-
|
|
478
|
-
<span class="cline-any cline-
|
|
479
|
-
<span class="cline-any cline-
|
|
480
|
-
<span class="cline-any cline-
|
|
481
|
-
<span class="cline-any cline-
|
|
482
|
-
<span class="cline-any cline-
|
|
483
|
-
<span class="cline-any cline-
|
|
484
|
-
<span class="cline-any cline-
|
|
485
|
-
<span class="cline-any cline-
|
|
486
|
-
<span class="cline-any cline-
|
|
487
|
-
<span class="cline-any cline-
|
|
488
|
-
<span class="cline-any cline-
|
|
489
|
-
<span class="cline-any cline-
|
|
490
|
-
<span class="cline-any cline-
|
|
491
|
-
<span class="cline-any cline-
|
|
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-
|
|
501
|
-
<span class="cline-any cline-
|
|
502
|
-
<span class="cline-any cline-
|
|
503
|
-
<span class="cline-any cline-
|
|
504
|
-
<span class="cline-any cline-
|
|
505
|
-
<span class="cline-any cline-
|
|
506
|
-
<span class="cline-any cline-
|
|
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-
|
|
519
|
-
<span class="cline-any cline-
|
|
520
|
-
<span class="cline-any cline-
|
|
521
|
-
<span class="cline-any cline-
|
|
522
|
-
<span class="cline-any cline-
|
|
523
|
-
<span class="cline-any cline-no"> </span>
|
|
524
|
-
<span class="cline-any cline-no"> </span>
|
|
525
|
-
<span class="cline-any cline-
|
|
526
|
-
<span class="cline-any cline-
|
|
527
|
-
<span class="cline-any cline-
|
|
528
|
-
<span class="cline-any cline-
|
|
529
|
-
<span class="cline-any cline-
|
|
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-
|
|
538
|
-
<span class="cline-any cline-
|
|
539
|
-
<span class="cline-any cline-
|
|
540
|
-
<span class="cline-any cline-
|
|
541
|
-
<span class="cline-any cline-
|
|
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-
|
|
546
|
-
<span class="cline-any cline-
|
|
547
|
-
<span class="
|
|
548
|
-
<span class="
|
|
549
|
-
<span class="
|
|
550
|
-
<span class="
|
|
551
|
-
<span class="
|
|
552
|
-
<span class="
|
|
553
|
-
<span class="
|
|
554
|
-
<span class="
|
|
555
|
-
<span class="
|
|
556
|
-
<span class="
|
|
557
|
-
<span class="
|
|
558
|
-
<span class="
|
|
559
|
-
<span class="
|
|
560
|
-
<span class="
|
|
561
|
-
<span class="
|
|
562
|
-
<span class="
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
<span class="
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
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></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
315
|
+
<span class="cline-any cline-yes">1x</span>
|
|
316
|
+
<span class="cline-any cline-yes">1x</span>
|
|
317
|
+
<span class="cline-any cline-yes">1x</span>
|
|
318
|
+
<span class="cline-any cline-yes">1x</span>
|
|
319
|
+
<span class="cline-any cline-yes">1x</span>
|
|
320
|
+
<span class="cline-any cline-yes">1x</span>
|
|
321
|
+
<span class="cline-any cline-yes">1x</span>
|
|
322
|
+
<span class="cline-any cline-yes">1x</span>
|
|
323
|
+
<span class="cline-any cline-yes">1x</span>
|
|
324
|
+
<span class="cline-any cline-yes">1x</span>
|
|
325
|
+
<span class="cline-any cline-yes">1x</span>
|
|
326
|
+
<span class="cline-any cline-yes">1x</span>
|
|
327
|
+
<span class="cline-any cline-yes">1x</span>
|
|
328
|
+
<span class="cline-any cline-yes">1x</span>
|
|
329
|
+
<span class="cline-any cline-yes">1x</span>
|
|
330
|
+
<span class="cline-any cline-yes">1x</span>
|
|
331
|
+
<span class="cline-any cline-yes">1x</span>
|
|
332
|
+
<span class="cline-any cline-yes">1x</span>
|
|
333
|
+
<span class="cline-any cline-yes">1x</span>
|
|
334
|
+
<span class="cline-any cline-yes">1x</span>
|
|
335
|
+
<span class="cline-any cline-yes">1x</span>
|
|
336
|
+
<span class="cline-any cline-yes">1x</span>
|
|
337
|
+
<span class="cline-any cline-yes">1x</span>
|
|
338
|
+
<span class="cline-any cline-yes">1x</span>
|
|
339
|
+
<span class="cline-any cline-yes">1x</span>
|
|
340
|
+
<span class="cline-any cline-yes">1x</span>
|
|
341
|
+
<span class="cline-any cline-yes">1x</span>
|
|
342
|
+
<span class="cline-any cline-yes">1x</span>
|
|
343
|
+
<span class="cline-any cline-yes">1x</span>
|
|
344
|
+
<span class="cline-any cline-yes">1x</span>
|
|
345
|
+
<span class="cline-any cline-yes">1x</span>
|
|
346
|
+
<span class="cline-any cline-yes">1x</span>
|
|
347
|
+
<span class="cline-any cline-yes">1x</span>
|
|
348
|
+
<span class="cline-any cline-yes">1x</span>
|
|
349
|
+
<span class="cline-any cline-yes">1x</span>
|
|
350
|
+
<span class="cline-any cline-yes">1x</span>
|
|
351
|
+
<span class="cline-any cline-yes">1x</span>
|
|
352
|
+
<span class="cline-any cline-yes">1x</span>
|
|
353
|
+
<span class="cline-any cline-yes">1x</span>
|
|
354
|
+
<span class="cline-any cline-yes">1x</span>
|
|
355
|
+
<span class="cline-any cline-yes">1x</span>
|
|
356
|
+
<span class="cline-any cline-yes">1x</span>
|
|
357
|
+
<span class="cline-any cline-yes">1x</span>
|
|
358
|
+
<span class="cline-any cline-yes">1x</span>
|
|
359
|
+
<span class="cline-any cline-yes">1x</span>
|
|
360
|
+
<span class="cline-any cline-yes">1x</span>
|
|
361
|
+
<span class="cline-any cline-yes">1x</span>
|
|
362
|
+
<span class="cline-any cline-yes">1x</span>
|
|
363
|
+
<span class="cline-any cline-yes">1x</span>
|
|
364
|
+
<span class="cline-any cline-yes">1x</span>
|
|
365
|
+
<span class="cline-any cline-yes">2x</span>
|
|
366
|
+
<span class="cline-any cline-yes">2x</span>
|
|
367
|
+
<span class="cline-any cline-yes">2x</span>
|
|
368
|
+
<span class="cline-any cline-yes">2x</span>
|
|
369
|
+
<span class="cline-any cline-yes">2x</span>
|
|
370
|
+
<span class="cline-any cline-yes">2x</span>
|
|
371
|
+
<span class="cline-any cline-yes">2x</span>
|
|
372
|
+
<span class="cline-any cline-yes">2x</span>
|
|
373
|
+
<span class="cline-any cline-yes">2x</span>
|
|
374
|
+
<span class="cline-any cline-yes">2x</span>
|
|
375
|
+
<span class="cline-any cline-yes">2x</span>
|
|
376
|
+
<span class="cline-any cline-yes">2x</span>
|
|
377
|
+
<span class="cline-any cline-yes">2x</span>
|
|
378
|
+
<span class="cline-any cline-yes">2x</span>
|
|
379
|
+
<span class="cline-any cline-yes">2x</span>
|
|
380
|
+
<span class="cline-any cline-yes">2x</span>
|
|
381
|
+
<span class="cline-any cline-yes">2x</span>
|
|
382
|
+
<span class="cline-any cline-yes">2x</span>
|
|
383
|
+
<span class="cline-any cline-yes">2x</span>
|
|
384
|
+
<span class="cline-any cline-yes">2x</span>
|
|
385
|
+
<span class="cline-any cline-yes">2x</span>
|
|
386
|
+
<span class="cline-any cline-yes">2x</span>
|
|
387
|
+
<span class="cline-any cline-yes">2x</span>
|
|
388
|
+
<span class="cline-any cline-yes">2x</span>
|
|
389
|
+
<span class="cline-any cline-yes">2x</span>
|
|
390
|
+
<span class="cline-any cline-yes">2x</span>
|
|
391
|
+
<span class="cline-any cline-yes">2x</span>
|
|
392
|
+
<span class="cline-any cline-yes">2x</span>
|
|
393
|
+
<span class="cline-any cline-yes">2x</span>
|
|
394
|
+
<span class="cline-any cline-yes">2x</span>
|
|
395
|
+
<span class="cline-any cline-yes">2x</span>
|
|
396
|
+
<span class="cline-any cline-yes">2x</span>
|
|
397
|
+
<span class="cline-any cline-yes">2x</span>
|
|
398
|
+
<span class="cline-any cline-yes">2x</span>
|
|
399
|
+
<span class="cline-any cline-yes">2x</span>
|
|
400
|
+
<span class="cline-any cline-yes">2x</span>
|
|
401
|
+
<span class="cline-any cline-yes">2x</span>
|
|
402
|
+
<span class="cline-any cline-yes">2x</span>
|
|
403
|
+
<span class="cline-any cline-yes">2x</span>
|
|
404
|
+
<span class="cline-any cline-yes">2x</span>
|
|
405
|
+
<span class="cline-any cline-yes">2x</span>
|
|
406
|
+
<span class="cline-any cline-yes">2x</span>
|
|
407
|
+
<span class="cline-any cline-yes">2x</span>
|
|
408
|
+
<span class="cline-any cline-yes">2x</span>
|
|
409
|
+
<span class="cline-any cline-yes">2x</span>
|
|
410
|
+
<span class="cline-any cline-yes">2x</span>
|
|
411
|
+
<span class="cline-any cline-yes">2x</span>
|
|
412
|
+
<span class="cline-any cline-yes">2x</span>
|
|
413
|
+
<span class="cline-any cline-yes">2x</span>
|
|
414
|
+
<span class="cline-any cline-yes">2x</span>
|
|
415
|
+
<span class="cline-any cline-yes">2x</span>
|
|
416
|
+
<span class="cline-any cline-yes">2x</span>
|
|
417
|
+
<span class="cline-any cline-yes">2x</span>
|
|
418
|
+
<span class="cline-any cline-yes">2x</span>
|
|
419
|
+
<span class="cline-any cline-yes">2x</span>
|
|
420
|
+
<span class="cline-any cline-yes">2x</span>
|
|
421
|
+
<span class="cline-any cline-yes">2x</span>
|
|
422
|
+
<span class="cline-any cline-yes">2x</span>
|
|
423
|
+
<span class="cline-any cline-yes">2x</span>
|
|
424
|
+
<span class="cline-any cline-yes">2x</span>
|
|
425
|
+
<span class="cline-any cline-yes">2x</span>
|
|
426
|
+
<span class="cline-any cline-yes">2x</span>
|
|
427
|
+
<span class="cline-any cline-yes">2x</span>
|
|
428
|
+
<span class="cline-any cline-yes">2x</span>
|
|
429
|
+
<span class="cline-any cline-yes">2x</span>
|
|
430
|
+
<span class="cline-any cline-yes">2x</span>
|
|
431
|
+
<span class="cline-any cline-yes">2x</span>
|
|
432
|
+
<span class="cline-any cline-yes">2x</span>
|
|
433
|
+
<span class="cline-any cline-yes">2x</span>
|
|
434
|
+
<span class="cline-any cline-yes">2x</span>
|
|
435
|
+
<span class="cline-any cline-yes">2x</span>
|
|
436
|
+
<span class="cline-any cline-yes">2x</span>
|
|
437
|
+
<span class="cline-any cline-yes">2x</span>
|
|
438
|
+
<span class="cline-any cline-yes">2x</span>
|
|
439
|
+
<span class="cline-any cline-yes">2x</span>
|
|
440
|
+
<span class="cline-any cline-yes">2x</span>
|
|
441
|
+
<span class="cline-any cline-yes">2x</span>
|
|
442
|
+
<span class="cline-any cline-yes">2x</span>
|
|
443
|
+
<span class="cline-any cline-yes">2x</span>
|
|
444
|
+
<span class="cline-any cline-yes">2x</span>
|
|
445
|
+
<span class="cline-any cline-yes">2x</span>
|
|
446
|
+
<span class="cline-any cline-yes">2x</span>
|
|
447
|
+
<span class="cline-any cline-yes">2x</span>
|
|
448
|
+
<span class="cline-any cline-yes">2x</span>
|
|
449
|
+
<span class="cline-any cline-yes">2x</span>
|
|
450
|
+
<span class="cline-any cline-yes">2x</span>
|
|
451
|
+
<span class="cline-any cline-yes">2x</span>
|
|
452
|
+
<span class="cline-any cline-yes">2x</span>
|
|
453
|
+
<span class="cline-any cline-yes">2x</span>
|
|
454
|
+
<span class="cline-any cline-yes">2x</span>
|
|
455
|
+
<span class="cline-any cline-yes">2x</span>
|
|
456
|
+
<span class="cline-any cline-yes">2x</span>
|
|
457
|
+
<span class="cline-any cline-yes">2x</span>
|
|
458
|
+
<span class="cline-any cline-yes">2x</span>
|
|
459
|
+
<span class="cline-any cline-yes">2x</span>
|
|
460
|
+
<span class="cline-any cline-yes">2x</span>
|
|
461
|
+
<span class="cline-any cline-yes">2x</span>
|
|
462
|
+
<span class="cline-any cline-yes">2x</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-yes">2x</span>
|
|
467
|
+
<span class="cline-any cline-yes">2x</span>
|
|
468
|
+
<span class="cline-any cline-yes">2x</span>
|
|
469
|
+
<span class="cline-any cline-yes">2x</span>
|
|
470
|
+
<span class="cline-any cline-yes">2x</span>
|
|
471
|
+
<span class="cline-any cline-yes">2x</span>
|
|
472
|
+
<span class="cline-any cline-yes">2x</span>
|
|
473
|
+
<span class="cline-any cline-yes">2x</span>
|
|
474
|
+
<span class="cline-any cline-yes">2x</span>
|
|
475
|
+
<span class="cline-any cline-yes">2x</span>
|
|
476
|
+
<span class="cline-any cline-yes">2x</span>
|
|
477
|
+
<span class="cline-any cline-yes">2x</span>
|
|
478
|
+
<span class="cline-any cline-yes">2x</span>
|
|
479
|
+
<span class="cline-any cline-yes">2x</span>
|
|
480
|
+
<span class="cline-any cline-yes">2x</span>
|
|
481
|
+
<span class="cline-any cline-yes">2x</span>
|
|
482
|
+
<span class="cline-any cline-yes">2x</span>
|
|
483
|
+
<span class="cline-any cline-yes">2x</span>
|
|
484
|
+
<span class="cline-any cline-yes">2x</span>
|
|
485
|
+
<span class="cline-any cline-yes">2x</span>
|
|
486
|
+
<span class="cline-any cline-yes">2x</span>
|
|
487
|
+
<span class="cline-any cline-yes">2x</span>
|
|
488
|
+
<span class="cline-any cline-yes">2x</span>
|
|
489
|
+
<span class="cline-any cline-yes">2x</span>
|
|
490
|
+
<span class="cline-any cline-yes">2x</span>
|
|
491
|
+
<span class="cline-any cline-yes">2x</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-yes">2x</span>
|
|
501
|
+
<span class="cline-any cline-yes">2x</span>
|
|
502
|
+
<span class="cline-any cline-yes">2x</span>
|
|
503
|
+
<span class="cline-any cline-yes">2x</span>
|
|
504
|
+
<span class="cline-any cline-yes">2x</span>
|
|
505
|
+
<span class="cline-any cline-yes">2x</span>
|
|
506
|
+
<span class="cline-any cline-yes">2x</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-yes">2x</span>
|
|
519
|
+
<span class="cline-any cline-yes">2x</span>
|
|
520
|
+
<span class="cline-any cline-yes">2x</span>
|
|
521
|
+
<span class="cline-any cline-yes">2x</span>
|
|
522
|
+
<span class="cline-any cline-yes">2x</span>
|
|
523
|
+
<span class="cline-any cline-no"> </span>
|
|
524
|
+
<span class="cline-any cline-no"> </span>
|
|
525
|
+
<span class="cline-any cline-yes">2x</span>
|
|
526
|
+
<span class="cline-any cline-yes">2x</span>
|
|
527
|
+
<span class="cline-any cline-yes">2x</span>
|
|
528
|
+
<span class="cline-any cline-yes">2x</span>
|
|
529
|
+
<span class="cline-any cline-yes">2x</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-yes">2x</span>
|
|
538
|
+
<span class="cline-any cline-yes">2x</span>
|
|
539
|
+
<span class="cline-any cline-yes">2x</span>
|
|
540
|
+
<span class="cline-any cline-yes">2x</span>
|
|
541
|
+
<span class="cline-any cline-yes">2x</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-yes">2x</span>
|
|
546
|
+
<span class="cline-any cline-yes">2x</span>
|
|
547
|
+
<span class="cline-any cline-yes">2x</span>
|
|
548
|
+
<span class="cline-any cline-yes">2x</span>
|
|
549
|
+
<span class="cline-any cline-yes">2x</span>
|
|
550
|
+
<span class="cline-any cline-yes">2x</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-yes">2x</span>
|
|
555
|
+
<span class="cline-any cline-yes">2x</span>
|
|
556
|
+
<span class="cline-any cline-yes">2x</span>
|
|
557
|
+
<span class="cline-any cline-yes">2x</span>
|
|
558
|
+
<span class="cline-any cline-yes">2x</span>
|
|
559
|
+
<span class="cline-any cline-no"> </span>
|
|
560
|
+
<span class="cline-any cline-no"> </span>
|
|
561
|
+
<span class="cline-any cline-yes">2x</span>
|
|
562
|
+
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/**
|
|
563
|
+
* HSuite Native Connect
|
|
564
|
+
* Copyright 2024-2025 HSuite (https://hsuite.finance)
|
|
565
|
+
*
|
|
566
|
+
* SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
|
|
567
|
+
*
|
|
568
|
+
* This file is part of HSuite Native Connect. For commercial licensing,
|
|
569
|
+
* visit https://hsuite.finance/licensing
|
|
570
|
+
*/
|
|
571
|
+
|
|
572
|
+
import { CommonModule } from '@angular/common';
|
|
573
|
+
import { Component, EventEmitter, Input, Output, inject } from '@angular/core';
|
|
574
|
+
import { getLogger } from '@hsuite/native-connect-sdk';
|
|
575
|
+
import { IonButton, IonIcon, IonSpinner, ModalController } from '@ionic/angular/standalone';
|
|
576
|
+
import { addIcons } from 'ionicons';
|
|
577
|
+
import { walletOutline, linkOutline, checkmarkCircleOutline } from 'ionicons/icons';
|
|
578
|
+
|
|
579
|
+
import { DEFAULT_WALLET_URL } from '../../models/provider-types';
|
|
580
|
+
import { UnifiedWalletService } from '../../services/unified-wallet.service';
|
|
581
|
+
import { WalletConnectionModalComponent } from '../wallet-connection-modal/wallet-connection-modal.component';
|
|
582
|
+
|
|
583
|
+
const logger = getLogger().scoped?.('WalletConnectButton'<span class="branch-0 cbranch-no" title="branch not covered" >) ?? getLogger();</span>
|
|
584
|
+
|
|
585
|
+
/**
|
|
586
|
+
* @component WalletConnectButtonComponent
|
|
587
|
+
* Ready-to-use wallet connection button for dApps with multi-protocol support.
|
|
588
|
+
*
|
|
589
|
+
* **Features:**
|
|
590
|
+
* - Beautiful connection modal with protocol/network selection
|
|
591
|
+
* - Support for HSuite Native and WalletConnect
|
|
592
|
+
* - Automatic connection state management
|
|
593
|
+
* - Loading states
|
|
594
|
+
* - Session display
|
|
595
|
+
* - One-click connect/disconnect
|
|
596
|
+
* - Theme-aware styling
|
|
597
|
+
*
|
|
598
|
+
* **Design Principles:**
|
|
599
|
+
* - Easy configuration
|
|
600
|
+
* - Fully customizable appearance
|
|
601
|
+
* - Accessible
|
|
602
|
+
* - Responsive
|
|
603
|
+
*/
|
|
604
|
+
@Component({
|
|
605
|
+
selector: 'wallet-connect-button',
|
|
606
|
+
standalone: true,
|
|
607
|
+
imports: [CommonModule, IonButton, IonIcon, IonSpinner],
|
|
608
|
+
providers: [ModalController],
|
|
609
|
+
templateUrl: './wallet-connect-button.component.html',
|
|
610
|
+
styleUrls: ['./wallet-connect-button.component.scss'],
|
|
611
|
+
})
|
|
612
|
+
export class WalletConnectButtonComponent {
|
|
613
|
+
/**
|
|
614
|
+
* WalletConnect project ID (required for WalletConnect)
|
|
615
|
+
*/
|
|
616
|
+
@Input() walletConnectProjectId?: string;
|
|
617
|
+
|
|
618
|
+
/**
|
|
619
|
+
* App name for wallet metadata
|
|
620
|
+
*/
|
|
621
|
+
@Input() appName: string = 'HSuite Demo';
|
|
622
|
+
|
|
623
|
+
/**
|
|
624
|
+
* App description for wallet metadata
|
|
625
|
+
*/
|
|
626
|
+
@Input() appDescription: string = 'Multi-chain wallet connection';
|
|
627
|
+
|
|
628
|
+
/**
|
|
629
|
+
* Wallet URL for targeting the wallet window
|
|
630
|
+
*/
|
|
631
|
+
@Input() walletUrl = DEFAULT_WALLET_URL;
|
|
632
|
+
|
|
633
|
+
/**
|
|
634
|
+
* Pins the connection network and hides the network-selection step in the
|
|
635
|
+
* modal. When set to `'mainnet'` or `'testnet'`, the dApp decides the network
|
|
636
|
+
* and the user never sees the picker. When omitted, the user chooses.
|
|
637
|
+
*/
|
|
638
|
+
@Input() network?: 'mainnet' | 'testnet';
|
|
639
|
+
|
|
640
|
+
/**
|
|
641
|
+
* Whether to show session information when connected
|
|
642
|
+
* @default true
|
|
643
|
+
*/
|
|
644
|
+
@Input() showSessionInfo = true;
|
|
645
|
+
|
|
646
|
+
/**
|
|
647
|
+
* Button color (Ionic color)
|
|
648
|
+
* @default 'primary'
|
|
649
|
+
*/
|
|
650
|
+
@Input() buttonColor: string = 'primary';
|
|
651
|
+
|
|
652
|
+
/**
|
|
653
|
+
* Button size
|
|
654
|
+
* @default 'default'
|
|
655
|
+
*/
|
|
656
|
+
@Input() size: 'small' | 'default' | 'large' = 'default';
|
|
657
|
+
|
|
658
|
+
/**
|
|
659
|
+
* Custom button text for connect state
|
|
660
|
+
*/
|
|
661
|
+
@Input() connectText = 'Connect Wallet';
|
|
662
|
+
|
|
663
|
+
/**
|
|
664
|
+
* Custom button text for when wallets are connected (multi-session mode)
|
|
665
|
+
*/
|
|
666
|
+
@Input() connectedText = 'Add Another Wallet';
|
|
667
|
+
|
|
668
|
+
/**
|
|
669
|
+
* Enable multi-session mode (allows multiple connections)
|
|
670
|
+
* @default true
|
|
671
|
+
*/
|
|
672
|
+
@Input() multiSessionMode = true;
|
|
673
|
+
|
|
674
|
+
/**
|
|
675
|
+
* Emitted when wallet successfully connects
|
|
676
|
+
*/
|
|
677
|
+
@Output() connected = new EventEmitter<unknown>();
|
|
678
|
+
|
|
679
|
+
/**
|
|
680
|
+
* Emitted when wallet disconnects
|
|
681
|
+
*/
|
|
682
|
+
@Output() disconnected = new EventEmitter<void>();
|
|
683
|
+
|
|
684
|
+
/**
|
|
685
|
+
* Emitted when connection fails
|
|
686
|
+
*/
|
|
687
|
+
@Output() error = new EventEmitter<Error>();
|
|
688
|
+
|
|
689
|
+
protected readonly wallet = inject(UnifiedWalletService);
|
|
690
|
+
protected readonly modalController = inject(ModalController);
|
|
691
|
+
|
|
692
|
+
protected isConnecting = false;
|
|
693
|
+
|
|
694
|
+
/**
|
|
695
|
+
*
|
|
696
|
+
*/
|
|
697
|
+
constructor() {
|
|
698
|
+
addIcons({ walletOutline, linkOutline, checkmarkCircleOutline });
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
/**
|
|
702
|
+
* Connect to wallet (opens modal - supports multi-session)
|
|
703
|
+
*/
|
|
704
|
+
async connect(): Promise<void> {
|
|
705
|
+
if (this.isConnecting) <span class="branch-0 cbranch-no" title="branch not covered" >return;</span>
|
|
706
|
+
|
|
707
|
+
this.isConnecting = true;
|
|
708
|
+
try {
|
|
709
|
+
await this.openConnectionModal();
|
|
710
|
+
<span class="branch-0 cbranch-no" title="branch not covered" > } catch (err) {</span>
|
|
688
711
|
<span class="cstat-no" title="statement not covered" > const error = err instanceof Error ? err : new Error(String(err));</span>
|
|
689
712
|
<span class="cstat-no" title="statement not covered" > this.error.emit(error);</span>
|
|
690
713
|
<span class="cstat-no" title="statement not covered" > logger.error('Connection failed', { error: error.message });</span>
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
714
|
+
} finally {
|
|
715
|
+
this.isConnecting = false;
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
|
|
719
|
+
/**
|
|
720
|
+
* Open the new multi-protocol connection modal
|
|
721
|
+
* Passes wallet configuration including walletUrl and metadata for proper window targeting.
|
|
722
|
+
*/
|
|
723
|
+
private async openConnectionModal(): Promise<void> {
|
|
724
|
+
const modal = await this.modalController.create({
|
|
725
|
+
component: WalletConnectionModalComponent,
|
|
726
|
+
componentProps: {
|
|
727
|
+
projectId: this.walletConnectProjectId,
|
|
728
|
+
appName: this.appName,
|
|
729
|
+
appDescription: this.appDescription,
|
|
730
|
+
walletUrl: this.walletUrl,
|
|
731
|
+
network: this.network,
|
|
732
|
+
},
|
|
733
|
+
});
|
|
734
|
+
|
|
735
|
+
await modal.present();
|
|
736
|
+
|
|
737
|
+
const { data } = await modal.onDidDismiss();
|
|
738
|
+
|
|
739
|
+
if (data?.connected) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
716
740
|
<span class="cstat-no" title="statement not covered" > // Emit connected event with unified accounts</span>
|
|
717
741
|
<span class="cstat-no" title="statement not covered" > const accounts = this.wallet.allAccounts();</span>
|
|
718
742
|
<span class="cstat-no" title="statement not covered" > this.connected.emit({</span>
|
|
@@ -721,13 +745,13 @@
|
|
|
721
745
|
<span class="cstat-no" title="statement not covered" > accounts,</span>
|
|
722
746
|
<span class="cstat-no" title="statement not covered" > });</span>
|
|
723
747
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
<span class="
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
/**
|
|
751
|
+
* Disconnect from wallet
|
|
752
|
+
* In multi-session mode, this disconnects ALL sessions
|
|
753
|
+
*/
|
|
754
|
+
<span class="fstat-no" title="function not covered" > async disconnect(): Promise<void> {</span>
|
|
731
755
|
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
732
756
|
<span class="cstat-no" title="statement not covered" > // Disconnect all sessions via UnifiedWalletService</span>
|
|
733
757
|
<span class="cstat-no" title="statement not covered" > await this.wallet.disconnectAll();</span>
|
|
@@ -739,18 +763,18 @@
|
|
|
739
763
|
<span class="cstat-no" title="statement not covered" > logger.error('Disconnect failed', { error: error.message });</span>
|
|
740
764
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
741
765
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
<span class="
|
|
766
|
+
|
|
767
|
+
/**
|
|
768
|
+
* Check if unknown wallet is connected
|
|
769
|
+
*/
|
|
770
|
+
<span class="fstat-no" title="function not covered" > isConnected(): boolean {</span>
|
|
747
771
|
<span class="cstat-no" title="statement not covered" > return this.wallet.isAnyConnected();</span>
|
|
748
772
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
<span class="
|
|
773
|
+
|
|
774
|
+
/**
|
|
775
|
+
* Get display text for connection state
|
|
776
|
+
*/
|
|
777
|
+
<span class="fstat-no" title="function not covered" > getButtonText(): string {</span>
|
|
754
778
|
<span class="cstat-no" title="statement not covered" > if (this.isConnecting) return 'Connecting...';</span>
|
|
755
779
|
<span class="cstat-no" title="statement not covered" ></span>
|
|
756
780
|
<span class="cstat-no" title="statement not covered" > if (this.multiSessionMode) {</span>
|
|
@@ -758,31 +782,31 @@
|
|
|
758
782
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
759
783
|
<span class="cstat-no" title="statement not covered" > return this.isConnected() ? 'Disconnect' : this.connectText;</span>
|
|
760
784
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
<span class="
|
|
785
|
+
|
|
786
|
+
/**
|
|
787
|
+
* Get icon name for current state
|
|
788
|
+
*/
|
|
789
|
+
<span class="fstat-no" title="function not covered" > getIconName(): string {</span>
|
|
766
790
|
<span class="cstat-no" title="statement not covered" > if (this.isConnected()) return 'checkmark-circle-outline';</span>
|
|
767
791
|
<span class="cstat-no" title="statement not covered" > return 'wallet-outline';</span>
|
|
768
792
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
<span class="
|
|
793
|
+
|
|
794
|
+
/**
|
|
795
|
+
* Truncate address for display
|
|
796
|
+
* @param address
|
|
797
|
+
*/
|
|
798
|
+
<span class="fstat-no" title="function not covered" > truncateAddress(address: string): string {</span>
|
|
775
799
|
<span class="cstat-no" title="statement not covered" > if (address.length <= 12) return address;</span>
|
|
776
800
|
<span class="cstat-no" title="statement not covered" > return `${address.substring(0, 6)}...${address.substring(address.length - 4)}`;</span>
|
|
777
801
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
<span class="
|
|
802
|
+
|
|
803
|
+
/**
|
|
804
|
+
* Get connected accounts (unified)
|
|
805
|
+
*/
|
|
806
|
+
<span class="fstat-no" title="function not covered" > getConnectedAccounts(): any[] {</span>
|
|
783
807
|
<span class="cstat-no" title="statement not covered" > return this.wallet.allAccounts();</span>
|
|
784
808
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
785
|
-
|
|
809
|
+
}
|
|
786
810
|
</pre></td></tr></table></pre>
|
|
787
811
|
|
|
788
812
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -790,7 +814,7 @@
|
|
|
790
814
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
791
815
|
Code coverage generated by
|
|
792
816
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
793
|
-
at 2026-06-
|
|
817
|
+
at 2026-06-27T21:00:37.138Z
|
|
794
818
|
</div>
|
|
795
819
|
<script src="../../../prettify.js"></script>
|
|
796
820
|
<script>
|