diff --git a/CHANGELOG.md b/CHANGELOG.md index 58014b50c988..963c7614b730 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,10 +3,15 @@ ## Next release ### Breaking Changes +- Removed deprecated sync modes (X_SNAP and X_CHECKPOINT). Use SNAP and CHECKPOINT instead [#7309](https://github.com/hyperledger/besu/pull/7309) ### Additions and Improvements -- Added EIP-7702 [#7237](https://github.com/hyperledger/besu/pull/7237) +- `--Xsnapsync-bft-enabled` option enables experimental support for snap sync with IBFT/QBFT permissioned Bonsai-DB chains [#7140](https://github.com/hyperledger/besu/pull/7140) - Add support to load external profiles using `--profile` [#7265](https://github.com/hyperledger/besu/issues/7265) +- `privacy-nonce-always-increments` option enables private transactions to always increment the nonce, even if the transaction is invalid [#6593](https://github.com/hyperledger/besu/pull/6593) +- Added `block-test` subcommand to the evmtool which runs blockchain reference tests [#7293](https://github.com/hyperledger/besu/pull/7293) +- implement gnark-crypto for eip-2537 [#7316](https://github.com/hyperledger/besu/pull/7316) +- Added EIP-7702 [#7237](https://github.com/hyperledger/besu/pull/7237) ### Bug fixes @@ -35,8 +40,6 @@ - Nodes in a permissioned chain maintain (and retry) connections to bootnodes [#7257](https://github.com/hyperledger/besu/pull/7257) - Promote experimental `besu storage x-trie-log` subcommand to production-ready [#7278](https://github.com/hyperledger/besu/pull/7278) - Enhanced BFT round-change diagnostics [#7271](https://github.com/hyperledger/besu/pull/7271) -- `--Xsnapsync-bft-enabled` option enables experimental support for snap sync with IBFT/QBFT permissioned Bonsai-DB chains [#7140](https://github.com/hyperledger/besu/pull/7140) -- `privacy-nonce-always-increments` option enables private transactions to always increment the nonce, even if the transaction is invalid [#6593](https://github.com/hyperledger/besu/pull/6593) ### Bug fixes - Validation errors ignored in accounts-allowlist and empty list [#7138](https://github.com/hyperledger/besu/issues/7138) diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/blockchain/ExpectBeneficiary.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/blockchain/ExpectBeneficiary.java index 25abc0782872..fe765cbeaecd 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/blockchain/ExpectBeneficiary.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/blockchain/ExpectBeneficiary.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.tests.acceptance.dsl.condition.blockchain; -import static org.assertj.core.api.Java6Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import org.hyperledger.besu.tests.acceptance.dsl.WaitUtils; import org.hyperledger.besu.tests.acceptance.dsl.condition.Condition; diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/blockchain/ExpectBlockNumberAbove.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/blockchain/ExpectBlockNumberAbove.java index 60fa6ad5460d..6919581bf6c5 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/blockchain/ExpectBlockNumberAbove.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/blockchain/ExpectBlockNumberAbove.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.tests.acceptance.dsl.condition.blockchain; -import static org.assertj.core.api.Java6Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import org.hyperledger.besu.tests.acceptance.dsl.WaitUtils; import org.hyperledger.besu.tests.acceptance.dsl.condition.Condition; diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/clique/ExpectNonceVote.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/clique/ExpectNonceVote.java index 6882890c140c..1e8f4b8a99f0 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/clique/ExpectNonceVote.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/clique/ExpectNonceVote.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.tests.acceptance.dsl.condition.clique; -import static org.assertj.core.api.Java6Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import static org.hyperledger.besu.tests.acceptance.dsl.condition.clique.ExpectNonceVote.CLIQUE_NONCE_VOTE.AUTH; import org.hyperledger.besu.tests.acceptance.dsl.WaitUtils; diff --git a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/clique/ExpectedBlockHasProposer.java b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/clique/ExpectedBlockHasProposer.java index 53b166c7149e..4abba67a0d56 100644 --- a/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/clique/ExpectedBlockHasProposer.java +++ b/acceptance-tests/dsl/src/main/java/org/hyperledger/besu/tests/acceptance/dsl/condition/clique/ExpectedBlockHasProposer.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.tests.acceptance.dsl.condition.clique; -import static org.assertj.core.api.Java6Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import org.hyperledger.besu.consensus.clique.CliqueBlockHeaderFunctions; import org.hyperledger.besu.consensus.clique.CliqueExtraData; diff --git a/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/permissioning/AccountLocalAndOnchainPermissioningAcceptanceTest.java b/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/permissioning/AccountLocalAndOnchainPermissioningAcceptanceTest.java index 1d38f7e6c7c6..1bd6d4cf9685 100644 --- a/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/permissioning/AccountLocalAndOnchainPermissioningAcceptanceTest.java +++ b/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/permissioning/AccountLocalAndOnchainPermissioningAcceptanceTest.java @@ -22,8 +22,10 @@ import java.util.Arrays; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +@Disabled("permissioning tests flaky with timeouts") public class AccountLocalAndOnchainPermissioningAcceptanceTest extends AccountSmartContractPermissioningAcceptanceTestBase { diff --git a/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/permissioning/NodeLocalAndOnchainPermissioningAcceptanceTest.java b/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/permissioning/NodeLocalAndOnchainPermissioningAcceptanceTest.java index 3dfdae528a8e..9271c0d977fa 100644 --- a/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/permissioning/NodeLocalAndOnchainPermissioningAcceptanceTest.java +++ b/acceptance-tests/tests/src/test/java/org/hyperledger/besu/tests/acceptance/permissioning/NodeLocalAndOnchainPermissioningAcceptanceTest.java @@ -17,8 +17,10 @@ import org.hyperledger.besu.tests.acceptance.dsl.node.Node; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; +@Disabled("permissioning tests flaky with timeouts") public class NodeLocalAndOnchainPermissioningAcceptanceTest extends NodeSmartContractPermissioningAcceptanceTestBase { diff --git a/besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java b/besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java index 427cac924808..118e586b1788 100644 --- a/besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java +++ b/besu/src/main/java/org/hyperledger/besu/cli/BesuCommand.java @@ -1566,11 +1566,11 @@ private void validateConsensusSyncCompatibilityOptions() { || genesisConfigOptionsSupplier.get().isQbft()) && !unstableSynchronizerOptions.isSnapSyncBftEnabled()) { final String errorSuffix = "can't be used with BFT networks"; - if (SyncMode.CHECKPOINT.equals(syncMode) || SyncMode.X_CHECKPOINT.equals(syncMode)) { + if (SyncMode.CHECKPOINT.equals(syncMode)) { throw new ParameterException( commandLine, String.format("%s %s", "Checkpoint sync", errorSuffix)); } - if (syncMode == SyncMode.SNAP || syncMode == SyncMode.X_SNAP) { + if (syncMode == SyncMode.SNAP) { throw new ParameterException(commandLine, String.format("%s %s", "Snap sync", errorSuffix)); } } @@ -1753,7 +1753,7 @@ && isOptionSet(commandLine, "--sync-min-peers")) { CommandLineUtils.failIfOptionDoesntMeetRequirement( commandLine, "--Xcheckpoint-post-merge-enabled can only be used with CHECKPOINT sync-mode", - SyncMode.isCheckpointSync(getDefaultSyncModeIfNotSet()), + getDefaultSyncModeIfNotSet() == SyncMode.CHECKPOINT, singletonList("--Xcheckpoint-post-merge-enabled")); CommandLineUtils.failIfOptionDoesntMeetRequirement( @@ -2043,10 +2043,10 @@ private PrivacyParameters privacyParameters() { if (syncMode == SyncMode.FAST) { throw new ParameterException(commandLine, String.format("%s %s", "Fast sync", errorSuffix)); } - if (syncMode == SyncMode.SNAP || syncMode == SyncMode.X_SNAP) { + if (syncMode == SyncMode.SNAP) { throw new ParameterException(commandLine, String.format("%s %s", "Snap sync", errorSuffix)); } - if (syncMode == SyncMode.CHECKPOINT || syncMode == SyncMode.X_CHECKPOINT) { + if (syncMode == SyncMode.CHECKPOINT) { throw new ParameterException( commandLine, String.format("%s %s", "Checkpoint sync", errorSuffix)); } diff --git a/besu/src/main/java/org/hyperledger/besu/controller/BesuController.java b/besu/src/main/java/org/hyperledger/besu/controller/BesuController.java index 6942fda31664..fb99318905a9 100644 --- a/besu/src/main/java/org/hyperledger/besu/controller/BesuController.java +++ b/besu/src/main/java/org/hyperledger/besu/controller/BesuController.java @@ -14,8 +14,6 @@ */ package org.hyperledger.besu.controller; -import static org.hyperledger.besu.ethereum.eth.sync.SyncMode.isCheckpointSync; - import org.hyperledger.besu.cli.config.EthNetworkConfig; import org.hyperledger.besu.config.GenesisConfigFile; import org.hyperledger.besu.config.GenesisConfigOptions; @@ -361,7 +359,7 @@ public BesuControllerBuilder fromGenesisFile( // wrap with TransitionBesuControllerBuilder if we have a terminal total difficulty: if (configOptions.getTerminalTotalDifficulty().isPresent()) { // Enable start with vanilla MergeBesuControllerBuilder for PoS checkpoint block - if (isCheckpointSync(syncMode) && isCheckpointPoSBlock(configOptions)) { + if (syncMode == SyncMode.CHECKPOINT && isCheckpointPoSBlock(configOptions)) { return new MergeBesuControllerBuilder().genesisConfigFile(genesisConfigFile); } else { // TODO this should be changed to vanilla MergeBesuControllerBuilder and the Transition* diff --git a/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java b/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java index 6123535f637d..73bc76608b3b 100644 --- a/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java +++ b/besu/src/main/java/org/hyperledger/besu/controller/BesuControllerBuilder.java @@ -708,8 +708,8 @@ public BesuController build() { ethPeers.setTrailingPeerRequirementsSupplier(synchronizer::calculateTrailingPeerRequirements); - if (SyncMode.isSnapSync(syncConfig.getSyncMode()) - || SyncMode.isCheckpointSync(syncConfig.getSyncMode())) { + if (syncConfig.getSyncMode() == SyncMode.SNAP + || syncConfig.getSyncMode() == SyncMode.CHECKPOINT) { synchronizer.subscribeInSync((b) -> ethPeers.snapServerPeersNeeded(!b)); ethPeers.snapServerPeersNeeded(true); } else { @@ -1157,7 +1157,7 @@ protected List createPeerValidators(final ProtocolSchedule protoc final CheckpointConfigOptions checkpointConfigOptions = genesisConfigOptions.getCheckpointOptions(); - if (SyncMode.isCheckpointSync(syncConfig.getSyncMode()) && checkpointConfigOptions.isValid()) { + if (syncConfig.getSyncMode() == SyncMode.CHECKPOINT && checkpointConfigOptions.isValid()) { validators.add( new CheckpointBlocksPeerValidator( protocolSchedule, diff --git a/besu/src/test/java/org/hyperledger/besu/ForkIdsNetworkConfigTest.java b/besu/src/test/java/org/hyperledger/besu/ForkIdsNetworkConfigTest.java index ae338f27cacf..fe5077acc6a3 100644 --- a/besu/src/test/java/org/hyperledger/besu/ForkIdsNetworkConfigTest.java +++ b/besu/src/test/java/org/hyperledger/besu/ForkIdsNetworkConfigTest.java @@ -44,6 +44,7 @@ import com.google.common.collect.Streams; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; import org.junit.runner.RunWith; @@ -207,4 +208,11 @@ public Stream streamMilestoneBlocks() { MilestoneStreamingProtocolSchedule::streamMilestoneBlocks); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/besu/src/test/java/org/hyperledger/besu/chainimport/JsonBlockImporterTest.java b/besu/src/test/java/org/hyperledger/besu/chainimport/JsonBlockImporterTest.java index 522f268c5769..73015afd005c 100644 --- a/besu/src/test/java/org/hyperledger/besu/chainimport/JsonBlockImporterTest.java +++ b/besu/src/test/java/org/hyperledger/besu/chainimport/JsonBlockImporterTest.java @@ -410,6 +410,13 @@ public void importChain_specialFields(final String consensusEngine) throws IOExc + genesisConfigFile.getConfigOptions().getConsensusEngine()); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } protected Block getBlockAt(final Blockchain blockchain, final long blockNumber) { diff --git a/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java b/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java index c6ffbdc17596..efeff412d623 100644 --- a/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java +++ b/besu/src/test/java/org/hyperledger/besu/cli/BesuCommandTest.java @@ -1107,7 +1107,7 @@ public void syncMode_invalid() { assertThat(commandOutput.toString(UTF_8)).isEmpty(); assertThat(commandErrorOutput.toString(UTF_8)) .contains( - "Invalid value for option '--sync-mode': expected one of [FULL, FAST, SNAP, CHECKPOINT, X_SNAP, X_CHECKPOINT] (case-insensitive) but was 'bogus'"); + "Invalid value for option '--sync-mode': expected one of [FULL, FAST, SNAP, CHECKPOINT] (case-insensitive) but was 'bogus'"); } @Test diff --git a/besu/src/test/java/org/hyperledger/besu/cli/NetworkDeprecationMessageTest.java b/besu/src/test/java/org/hyperledger/besu/cli/NetworkDeprecationMessageTest.java index e140db8c2a8c..87be2a699e37 100644 --- a/besu/src/test/java/org/hyperledger/besu/cli/NetworkDeprecationMessageTest.java +++ b/besu/src/test/java/org/hyperledger/besu/cli/NetworkDeprecationMessageTest.java @@ -20,6 +20,7 @@ import org.hyperledger.besu.cli.config.NetworkName; import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.EnumSource; @@ -45,4 +46,11 @@ void shouldThrowErrorForNonDeprecatedNetworks(final NetworkName network) { assertThatThrownBy(() -> NetworkDeprecationMessage.generate(network)) .isInstanceOf(AssertionError.class); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/CliqueProtocolScheduleTest.java b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/CliqueProtocolScheduleTest.java index 30a3967da9ce..35f959e45bd0 100644 --- a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/CliqueProtocolScheduleTest.java +++ b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/CliqueProtocolScheduleTest.java @@ -14,8 +14,8 @@ */ package org.hyperledger.besu.consensus.clique; +import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.assertj.core.api.Java6Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; diff --git a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/blockcreation/CliqueBlockCreatorTest.java b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/blockcreation/CliqueBlockCreatorTest.java index 7dcbfa34bac3..485b2aff79d7 100644 --- a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/blockcreation/CliqueBlockCreatorTest.java +++ b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/blockcreation/CliqueBlockCreatorTest.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.consensus.clique.blockcreation; -import static org.assertj.core.api.Java6Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import static org.hyperledger.besu.ethereum.core.InMemoryKeyValueStorageProvider.createInMemoryBlockchain; import static org.hyperledger.besu.ethereum.core.InMemoryKeyValueStorageProvider.createInMemoryWorldStateArchive; import static org.mockito.ArgumentMatchers.any; @@ -75,7 +75,6 @@ import com.google.common.collect.Lists; import org.apache.tuweni.bytes.Bytes; -import org.assertj.core.api.Java6Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -98,7 +97,7 @@ public class CliqueBlockCreatorTest { private VoteProvider voteProvider; @BeforeEach - public void setup() { + void setup() { protocolSchedule = CliqueProtocolSchedule.create( GenesisConfigFile.DEFAULT.getConfigOptions(), @@ -160,7 +159,7 @@ public void proposerAddressCanBeExtractFromAConstructedBlock() { final Block createdBlock = blockCreator.createBlock(5L).getBlock(); - Java6Assertions.assertThat(CliqueHelpers.getProposerOfBlock(createdBlock.getHeader())) + assertThat(CliqueHelpers.getProposerOfBlock(createdBlock.getHeader())) .isEqualTo(proposerAddress); } diff --git a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/CliqueExtraDataValidationRuleTest.java b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/CliqueExtraDataValidationRuleTest.java index 0d30cdf655b0..afcc7e23c2fe 100644 --- a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/CliqueExtraDataValidationRuleTest.java +++ b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/CliqueExtraDataValidationRuleTest.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.consensus.clique.headervalidationrules; -import static org.assertj.core.api.Java6Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; diff --git a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/VoteValidationRuleTest.java b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/VoteValidationRuleTest.java index fdb688595779..0ba0e5f3c8b0 100644 --- a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/VoteValidationRuleTest.java +++ b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/headervalidationrules/VoteValidationRuleTest.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.consensus.clique.headervalidationrules; -import static org.assertj.core.api.Java6Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import org.hyperledger.besu.consensus.clique.CliqueBlockInterface; import org.hyperledger.besu.ethereum.core.BlockHeader; @@ -22,6 +22,7 @@ import java.util.stream.Stream; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -52,4 +53,11 @@ public void test(final long input, final boolean expectedResult) { assertThat(uut.validate(header, null)).isEqualTo(expectedResult); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/jsonrpc/methods/CliqueProposalsTest.java b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/jsonrpc/methods/CliqueProposalsTest.java index 50dc379b5768..cdfbeb6299ba 100644 --- a/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/jsonrpc/methods/CliqueProposalsTest.java +++ b/consensus/clique/src/test/java/org/hyperledger/besu/consensus/clique/jsonrpc/methods/CliqueProposalsTest.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.consensus.clique.jsonrpc.methods; -import static org.assertj.core.api.Java6Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import org.hyperledger.besu.consensus.common.jsonrpc.AbstractVoteProposerMethod; import org.hyperledger.besu.consensus.common.jsonrpc.AbstractVoteProposerMethodTest; diff --git a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/VoteTest.java b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/VoteTest.java index b01a3a97c6f8..ec37b1d4bb25 100644 --- a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/VoteTest.java +++ b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/bft/VoteTest.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.consensus.common.bft; -import static org.assertj.core.api.Java6Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import org.hyperledger.besu.datatypes.Address; diff --git a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/jsonrpc/AbstractVoteProposerMethodTest.java b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/jsonrpc/AbstractVoteProposerMethodTest.java index a59bd556e4dd..eefe1784c823 100644 --- a/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/jsonrpc/AbstractVoteProposerMethodTest.java +++ b/consensus/common/src/test/java/org/hyperledger/besu/consensus/common/jsonrpc/AbstractVoteProposerMethodTest.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.consensus.common.jsonrpc; -import static org.assertj.core.api.Java6Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; diff --git a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/BftBlockHashingTest.java b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/BftBlockHashingTest.java index 7d5362ff7c6d..1b821c78c964 100644 --- a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/BftBlockHashingTest.java +++ b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/BftBlockHashingTest.java @@ -15,7 +15,7 @@ package org.hyperledger.besu.consensus.ibft; import static java.util.Collections.emptyList; -import static org.assertj.core.api.Java6Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import org.hyperledger.besu.consensus.common.bft.BftBlockHashing; import org.hyperledger.besu.consensus.common.bft.BftBlockHeaderFunctions; diff --git a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/jsonrpc/methods/IbftGetPendingVotesTest.java b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/jsonrpc/methods/IbftGetPendingVotesTest.java index ddede6aefe4a..b3d8cd43ccaa 100644 --- a/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/jsonrpc/methods/IbftGetPendingVotesTest.java +++ b/consensus/ibft/src/test/java/org/hyperledger/besu/consensus/ibft/jsonrpc/methods/IbftGetPendingVotesTest.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.consensus.ibft.jsonrpc.methods; -import static org.assertj.core.api.Java6Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import org.hyperledger.besu.consensus.common.jsonrpc.AbstractVoteProposerMethod; import org.hyperledger.besu.consensus.common.jsonrpc.AbstractVoteProposerMethodTest; diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/graphql/EthGraphQLHttpBySpecTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/graphql/EthGraphQLHttpBySpecTest.java index 4cd316460072..df620d7c1c0c 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/graphql/EthGraphQLHttpBySpecTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/graphql/EthGraphQLHttpBySpecTest.java @@ -15,6 +15,7 @@ package org.hyperledger.besu.ethereum.api.graphql; import static com.google.common.base.Preconditions.checkState; +import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; import java.net.URISyntaxException; @@ -31,6 +32,7 @@ import okhttp3.RequestBody; import okhttp3.Response; import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -83,4 +85,11 @@ private void graphQLCall(final String name) throws IOException { Assertions.assertThat(resp.code()).isEqualTo(expectedStatusCode); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceParameterizedTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceParameterizedTest.java index a93575aa8f56..a561079e7cf8 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceParameterizedTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/JsonRpcHttpServiceParameterizedTest.java @@ -27,6 +27,7 @@ import okhttp3.Response; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -60,4 +61,11 @@ public void invalidJsonShouldReturnParseError(final String requestJson) throws E json, null, expectedError.getCode(), expectedError.getMessage()); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcErrorTypeConverterTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcErrorTypeConverterTest.java index 8dbee4bf91d9..a54057f8f429 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcErrorTypeConverterTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/RpcErrorTypeConverterTest.java @@ -22,6 +22,7 @@ import java.util.Arrays; import java.util.Collection; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -85,4 +86,11 @@ public void expectedTransactionValidationToJsonRpcErrorConversion( assertThat(JsonRpcErrorConverter.convertTransactionInvalidReason(txInvalidReason)) .isEqualTo(expectedJsonRpcError); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/DebugJsonRpcHttpBySpecTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/DebugJsonRpcHttpBySpecTest.java index 0ee3388f4e9a..e1a13f1a8025 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/DebugJsonRpcHttpBySpecTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/DebugJsonRpcHttpBySpecTest.java @@ -14,9 +14,12 @@ */ package org.hyperledger.besu.ethereum.api.jsonrpc.bonsai; +import static org.assertj.core.api.Assertions.assertThat; + import org.hyperledger.besu.ethereum.api.jsonrpc.AbstractJsonRpcHttpBySpecTest; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; public class DebugJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpBySpecTest { @@ -33,4 +36,11 @@ public static Object[][] specs() { "debug/account-at", "debug/batch-send-raw-transaction", "debug/trace-transaction" }); // storageRange and accountRange are not working with bonsai trie } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/DebugTraceJsonRpcHttpBySpecTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/DebugTraceJsonRpcHttpBySpecTest.java index 37b2cedf7cfe..fbe3f32196ae 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/DebugTraceJsonRpcHttpBySpecTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/DebugTraceJsonRpcHttpBySpecTest.java @@ -14,11 +14,14 @@ */ package org.hyperledger.besu.ethereum.api.jsonrpc.bonsai; +import static org.assertj.core.api.Assertions.assertThat; + import org.hyperledger.besu.ethereum.api.jsonrpc.AbstractJsonRpcHttpBySpecTest; import org.hyperledger.besu.ethereum.core.BlockchainSetupUtil; import org.hyperledger.besu.plugin.services.storage.DataStorageFormat; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; public class DebugTraceJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpBySpecTest { @@ -38,4 +41,11 @@ protected BlockchainSetupUtil getBlockchainSetupUtil(final DataStorageFormat sto public static Object[][] specs() { return AbstractJsonRpcHttpBySpecTest.findSpecFiles(new String[] {"debug/trace-call"}); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/EthByzantiumJsonRpcHttpBySpecTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/EthByzantiumJsonRpcHttpBySpecTest.java index 358aeb15542b..f1b6b695a866 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/EthByzantiumJsonRpcHttpBySpecTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/EthByzantiumJsonRpcHttpBySpecTest.java @@ -14,11 +14,14 @@ */ package org.hyperledger.besu.ethereum.api.jsonrpc.bonsai; +import static org.assertj.core.api.Assertions.assertThat; + import org.hyperledger.besu.ethereum.api.jsonrpc.AbstractJsonRpcHttpBySpecTest; import org.hyperledger.besu.ethereum.core.BlockchainSetupUtil; import org.hyperledger.besu.plugin.services.storage.DataStorageFormat; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; public class EthByzantiumJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpBySpecTest { @@ -38,4 +41,11 @@ protected BlockchainSetupUtil getBlockchainSetupUtil(final DataStorageFormat dat public static Object[][] specs() { return AbstractJsonRpcHttpBySpecTest.findSpecFiles(new String[] {"eth_latest"}); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/EthJsonRpcHttpBySpecTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/EthJsonRpcHttpBySpecTest.java index 9dc7d193c8ba..1bb5f801ebc0 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/EthJsonRpcHttpBySpecTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/EthJsonRpcHttpBySpecTest.java @@ -14,9 +14,12 @@ */ package org.hyperledger.besu.ethereum.api.jsonrpc.bonsai; +import static org.assertj.core.api.Assertions.assertThat; + import org.hyperledger.besu.ethereum.api.jsonrpc.AbstractJsonRpcHttpBySpecTest; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; public class EthJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpBySpecTest { @@ -30,4 +33,11 @@ public void setup() throws Exception { public static Object[][] specs() { return findSpecFiles(new String[] {"eth"}); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/TraceJsonRpcHttpBySpecTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/TraceJsonRpcHttpBySpecTest.java index a3bf6fc51db6..51d573ddae7c 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/TraceJsonRpcHttpBySpecTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/bonsai/TraceJsonRpcHttpBySpecTest.java @@ -14,11 +14,14 @@ */ package org.hyperledger.besu.ethereum.api.jsonrpc.bonsai; +import static org.assertj.core.api.Assertions.assertThat; + import org.hyperledger.besu.ethereum.api.jsonrpc.AbstractJsonRpcHttpBySpecTest; import org.hyperledger.besu.ethereum.core.BlockchainSetupUtil; import org.hyperledger.besu.plugin.services.storage.DataStorageFormat; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; public class TraceJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpBySpecTest { @@ -52,4 +55,11 @@ public static Object[][] specs() { "trace/specs/trace-raw-transaction" }); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/context/ContextKeyTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/context/ContextKeyTest.java index a31bcb96d8e9..ed2574170eda 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/context/ContextKeyTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/context/ContextKeyTest.java @@ -26,6 +26,7 @@ import io.vertx.core.json.JsonObject; import io.vertx.ext.web.RoutingContext; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -66,4 +67,11 @@ private static RoutingContext ctx(final T value) { private static Supplier supplier(final T value) { return () -> value; } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/DebugJsonRpcHttpBySpecTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/DebugJsonRpcHttpBySpecTest.java index 562b4c257245..bc8d4178ed10 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/DebugJsonRpcHttpBySpecTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/DebugJsonRpcHttpBySpecTest.java @@ -14,9 +14,12 @@ */ package org.hyperledger.besu.ethereum.api.jsonrpc.forest; +import static org.assertj.core.api.Assertions.assertThat; + import org.hyperledger.besu.ethereum.api.jsonrpc.AbstractJsonRpcHttpBySpecTest; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; public class DebugJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpBySpecTest { @@ -37,4 +40,11 @@ public static Object[][] specs() { "debug/storage-range" }); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/DebugTraceJsonRpcHttpBySpecTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/DebugTraceJsonRpcHttpBySpecTest.java index 89b79c2af316..cdedc3438b6f 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/DebugTraceJsonRpcHttpBySpecTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/DebugTraceJsonRpcHttpBySpecTest.java @@ -14,11 +14,14 @@ */ package org.hyperledger.besu.ethereum.api.jsonrpc.forest; +import static org.assertj.core.api.Assertions.assertThat; + import org.hyperledger.besu.ethereum.api.jsonrpc.AbstractJsonRpcHttpBySpecTest; import org.hyperledger.besu.ethereum.core.BlockchainSetupUtil; import org.hyperledger.besu.plugin.services.storage.DataStorageFormat; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; public class DebugTraceJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpBySpecTest { @@ -38,4 +41,11 @@ protected BlockchainSetupUtil getBlockchainSetupUtil(final DataStorageFormat sto public static Object[][] specs() { return AbstractJsonRpcHttpBySpecTest.findSpecFiles(new String[] {"debug/trace-call"}); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/EthByzantiumJsonRpcHttpBySpecTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/EthByzantiumJsonRpcHttpBySpecTest.java index 163929799231..c7c2d131a105 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/EthByzantiumJsonRpcHttpBySpecTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/EthByzantiumJsonRpcHttpBySpecTest.java @@ -14,11 +14,14 @@ */ package org.hyperledger.besu.ethereum.api.jsonrpc.forest; +import static org.assertj.core.api.Assertions.assertThat; + import org.hyperledger.besu.ethereum.api.jsonrpc.AbstractJsonRpcHttpBySpecTest; import org.hyperledger.besu.ethereum.core.BlockchainSetupUtil; import org.hyperledger.besu.plugin.services.storage.DataStorageFormat; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; public class EthByzantiumJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpBySpecTest { @@ -38,4 +41,11 @@ protected BlockchainSetupUtil getBlockchainSetupUtil(final DataStorageFormat sto public static Object[][] specs() { return AbstractJsonRpcHttpBySpecTest.findSpecFiles(new String[] {"eth_latest"}); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/EthJsonRpcHttpBySpecTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/EthJsonRpcHttpBySpecTest.java index 277f1b89d039..041c0c711e1a 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/EthJsonRpcHttpBySpecTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/EthJsonRpcHttpBySpecTest.java @@ -14,9 +14,12 @@ */ package org.hyperledger.besu.ethereum.api.jsonrpc.forest; +import static org.assertj.core.api.Assertions.assertThat; + import org.hyperledger.besu.ethereum.api.jsonrpc.AbstractJsonRpcHttpBySpecTest; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; public class EthJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpBySpecTest { @@ -30,4 +33,11 @@ public void setup() throws Exception { public static Object[][] specs() { return findSpecFiles(new String[] {"eth"}); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/TraceJsonRpcHttpBySpecTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/TraceJsonRpcHttpBySpecTest.java index d71c28a22348..b33be9100595 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/TraceJsonRpcHttpBySpecTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/forest/TraceJsonRpcHttpBySpecTest.java @@ -14,11 +14,14 @@ */ package org.hyperledger.besu.ethereum.api.jsonrpc.forest; +import static org.assertj.core.api.Assertions.assertThat; + import org.hyperledger.besu.ethereum.api.jsonrpc.AbstractJsonRpcHttpBySpecTest; import org.hyperledger.besu.ethereum.core.BlockchainSetupUtil; import org.hyperledger.besu.plugin.services.storage.DataStorageFormat; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; public class TraceJsonRpcHttpBySpecTest extends AbstractJsonRpcHttpBySpecTest { @@ -52,4 +55,11 @@ public static Object[][] specs() { "trace/specs/trace-raw-transaction" }); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceFilterTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceFilterTest.java index 6a9d4da03d00..c5c03f6b114e 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceFilterTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/methods/TraceFilterTest.java @@ -29,6 +29,7 @@ import java.util.function.Supplier; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; @@ -76,4 +77,11 @@ public void shouldFailIfParamsExceedMaxRange( final JsonRpcErrorResponse errorResponse = (JsonRpcErrorResponse) response; assertThat(errorResponse.getErrorType()).isEqualTo(RpcErrorType.EXCEEDS_RPC_MAX_BLOCK_RANGE); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/results/transaction/pool/PendingPermissionTransactionFilterTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/results/transaction/pool/PendingPermissionTransactionFilterTest.java index b08e5f7e8d2d..ada560adb021 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/results/transaction/pool/PendingPermissionTransactionFilterTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/internal/results/transaction/pool/PendingPermissionTransactionFilterTest.java @@ -39,6 +39,7 @@ import java.util.Optional; import java.util.Set; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -126,4 +127,11 @@ private Set getPendingTransactions() { } return new LinkedHashSet<>(pendingTransactionList); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/timeout/TimeoutHandlerTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/timeout/TimeoutHandlerTest.java index c8047b806c7d..2fd96d6b98c5 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/timeout/TimeoutHandlerTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/jsonrpc/timeout/TimeoutHandlerTest.java @@ -14,6 +14,7 @@ */ package org.hyperledger.besu.ethereum.api.jsonrpc.timeout; +import static org.assertj.core.api.Assertions.assertThat; import static org.hyperledger.besu.ethereum.api.jsonrpc.RpcMethod.ETH_BLOCK_NUMBER; import static org.hyperledger.besu.ethereum.api.jsonrpc.RpcMethod.ETH_GET_LOGS; import static org.mockito.ArgumentMatchers.any; @@ -39,6 +40,7 @@ import io.vertx.core.Vertx; import io.vertx.core.json.JsonObject; import io.vertx.ext.web.RoutingContext; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; import org.mockito.Mockito; @@ -86,4 +88,11 @@ public void test( .setTimer(eq(TimeUnit.SECONDS.toMillis(timeoutSec)), any()); verify(ctx, times(timerMustBeSet ? 1 : 0)).addBodyEndHandler(any()); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/query/BackendQueryTest.java b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/query/BackendQueryTest.java index 20eaf656ed78..4c5c2679eed1 100644 --- a/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/query/BackendQueryTest.java +++ b/ethereum/api/src/test/java/org/hyperledger/besu/ethereum/api/query/BackendQueryTest.java @@ -20,6 +20,7 @@ import java.util.function.Supplier; import java.util.stream.Stream; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -52,4 +53,11 @@ public void test( assertThat(BackendQuery.runIfAlive(() -> wantReturn, alive)).isEqualTo(wantReturn); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/HashRateMiningCoordinatorTest.java b/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/HashRateMiningCoordinatorTest.java index 985870c6fbaf..73e122b62037 100644 --- a/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/HashRateMiningCoordinatorTest.java +++ b/ethereum/blockcreation/src/test/java/org/hyperledger/besu/ethereum/blockcreation/HashRateMiningCoordinatorTest.java @@ -24,6 +24,7 @@ import java.util.Collection; import java.util.UUID; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -62,4 +63,11 @@ public void test( assertThat(miningCoordinator.hashesPerSecond()).contains(wantTotalHashrate); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/build.gradle b/ethereum/core/build.gradle index 4abde77acee6..0a25fa1a421b 100644 --- a/ethereum/core/build.gradle +++ b/ethereum/core/build.gradle @@ -61,7 +61,6 @@ dependencies { implementation 'io.tmio:tuweni-concurrent' implementation 'io.tmio:tuweni-units' implementation 'io.tmio:tuweni-rlp' - implementation 'org.hyperledger.besu:bls12-381' implementation 'org.immutables:value-annotations' implementation 'tech.pegasys:jc-kzg-4844' diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/chain/GenesisStateTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/chain/GenesisStateTest.java index ea1eb044149f..70c1e64bd1a7 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/chain/GenesisStateTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/chain/GenesisStateTest.java @@ -32,6 +32,7 @@ import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.units.bigints.UInt256; import org.bouncycastle.util.encoders.Hex; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -331,4 +332,11 @@ void genesisFromPrague(final DataStorageConfiguration dataStorageConfiguration) Hash.fromHexString( "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421")); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/UtilTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/UtilTest.java index f5df655236f9..39b804abe078 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/UtilTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/UtilTest.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.ethereum.core; -import static org.assertj.core.api.Java6Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThat; import org.junit.jupiter.api.Test; diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/encoding/BlobTransactionEncodingTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/encoding/BlobTransactionEncodingTest.java index b847d0bb721a..e53c1b50e00c 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/encoding/BlobTransactionEncodingTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/encoding/BlobTransactionEncodingTest.java @@ -27,6 +27,7 @@ import java.util.stream.Stream; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -117,4 +118,11 @@ public String toString() { : bytes.toString(); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/feemarket/BaseFeeMarketBaseFeeTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/feemarket/BaseFeeMarketBaseFeeTest.java index d6d94c8453d4..e657c5c2e20e 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/feemarket/BaseFeeMarketBaseFeeTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/feemarket/BaseFeeMarketBaseFeeTest.java @@ -30,6 +30,7 @@ import com.google.common.base.Charsets; import com.google.common.io.Resources; import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -99,4 +100,11 @@ public void setExpectedBaseFee(final Wei expectedBaseFee) { this.expectedBaseFee = expectedBaseFee; } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/feemarket/CoinbaseFeePriceCalculatorTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/feemarket/CoinbaseFeePriceCalculatorTest.java index 2706444f83f0..1da9a689cf26 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/feemarket/CoinbaseFeePriceCalculatorTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/feemarket/CoinbaseFeePriceCalculatorTest.java @@ -21,6 +21,7 @@ import java.util.Optional; import java.util.stream.Stream; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -54,4 +55,11 @@ public void assertThatCalculatorWorks( assertThat(coinbaseFeePriceCalculator.price(coinbaseFee, transactionGasPrice, baseFee)) .isEqualByComparingTo(expectedPrice); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/feemarket/TransactionPriceCalculatorTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/feemarket/TransactionPriceCalculatorTest.java index c23061ac8f15..df07fd1f7524 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/feemarket/TransactionPriceCalculatorTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/core/feemarket/TransactionPriceCalculatorTest.java @@ -29,6 +29,7 @@ import java.util.Optional; import java.util.stream.Stream; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -146,4 +147,11 @@ public void assertThatCalculatorWorks( baseFee)) .isEqualByComparingTo(expectedPrice); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/forkid/ForkIdBackwardCompatibilityTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/forkid/ForkIdBackwardCompatibilityTest.java index cd28e6e9aa68..84c24bc9a258 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/forkid/ForkIdBackwardCompatibilityTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/forkid/ForkIdBackwardCompatibilityTest.java @@ -24,6 +24,7 @@ import java.util.stream.Stream; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -99,4 +100,11 @@ public void assertBackwardCompatibilityWorks( assertThat(forkIdManager.getForkIdForChainHead()) .isEqualTo(legacyEth64 ? legacyForkId : wantForkId); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/IntrinsicGasTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/IntrinsicGasTest.java index a6ae23724e3b..bb9ce2b495a4 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/IntrinsicGasTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/IntrinsicGasTest.java @@ -14,6 +14,8 @@ */ package org.hyperledger.besu.ethereum.mainnet; +import static org.assertj.core.api.Assertions.assertThat; + import org.hyperledger.besu.ethereum.core.Transaction; import org.hyperledger.besu.ethereum.rlp.RLP; import org.hyperledger.besu.evm.gascalculator.FrontierGasCalculator; @@ -24,6 +26,7 @@ import org.apache.tuweni.bytes.Bytes; import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -90,4 +93,11 @@ public void validateGasCost( gasCalculator.transactionIntrinsicGasCost(t.getPayload(), t.isContractCreation())) .isEqualTo(expectedGas); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/PragueWithdrawalRequestValidatorTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/PragueWithdrawalRequestValidatorTest.java index 1d53b4b19ce2..8756f855928b 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/PragueWithdrawalRequestValidatorTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/PragueWithdrawalRequestValidatorTest.java @@ -28,6 +28,7 @@ import java.util.Optional; import java.util.stream.Stream; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -72,4 +73,11 @@ private static Stream validateWithdrawalRequestsInBlockParamsForPragu Arguments.of(blockWithWithdrawalRequestsMismatch(), false), Arguments.of(blockWithMoreThanMaximumWithdrawalRequests(), false)); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/RefundSstoreGasTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/RefundSstoreGasTest.java index e98bbc528c1a..77edb8a76fee 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/RefundSstoreGasTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/RefundSstoreGasTest.java @@ -16,6 +16,7 @@ import static org.apache.tuweni.units.bigints.UInt256.ONE; import static org.apache.tuweni.units.bigints.UInt256.ZERO; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -29,6 +30,7 @@ import org.apache.tuweni.units.bigints.UInt256; import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -134,4 +136,11 @@ public void shouldRefundCorrectGas( newValue, mockSupplierCurrentValue, mockSupplierForOriginalValue)) .isEqualTo(expectedGasRefund); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/WithdrawalRequestValidatorTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/WithdrawalRequestValidatorTest.java index 43797a6e0d65..f93067d94f2a 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/WithdrawalRequestValidatorTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/WithdrawalRequestValidatorTest.java @@ -29,6 +29,7 @@ import java.util.Optional; import java.util.stream.Stream; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -76,4 +77,11 @@ private static Stream validateWithdrawalRequestsInBlockParamsForProhi Arguments.of(blockWithoutWithdrawalRequestsWithWithdrawalRequestsRoot(), false), Arguments.of(blockWithoutWithdrawalRequestsAndWithdrawalRequestsRoot(), true)); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitElasticityValidationRuleFixedBaseFeeMarketTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitElasticityValidationRuleFixedBaseFeeMarketTest.java index 7f29e6f42a08..94b58fa69045 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitElasticityValidationRuleFixedBaseFeeMarketTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitElasticityValidationRuleFixedBaseFeeMarketTest.java @@ -25,6 +25,7 @@ import java.util.Optional; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; @@ -72,4 +73,11 @@ public void test( assertThat(uut.validate(header, parent)).isEqualTo(expectedResult); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitElasticityValidationRuleTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitElasticityValidationRuleTest.java index bd69303a05c6..1f74233445c9 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitElasticityValidationRuleTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitElasticityValidationRuleTest.java @@ -24,6 +24,7 @@ import java.util.Optional; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; @@ -69,4 +70,11 @@ public void testGasLimitElasticityValidationRule( assertThat(uut.validate(header, parent)).isEqualTo(expectedResult); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitElasticityValidationRuleZeroBaseFeeMarketTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitElasticityValidationRuleZeroBaseFeeMarketTest.java index 229b402edce7..39462a22cdb6 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitElasticityValidationRuleZeroBaseFeeMarketTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitElasticityValidationRuleZeroBaseFeeMarketTest.java @@ -24,6 +24,7 @@ import java.util.Optional; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; @@ -71,4 +72,11 @@ public void test( assertThat(uut.validate(header, parent)).isEqualTo(expectedResult); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitRangeAndDeltaValidationRuleTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitRangeAndDeltaValidationRuleTest.java index 635f8e1c1909..665da47354ce 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitRangeAndDeltaValidationRuleTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasLimitRangeAndDeltaValidationRuleTest.java @@ -23,6 +23,7 @@ import java.util.Optional; import java.util.stream.Stream; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -102,4 +103,11 @@ public void test( assertThat(uut.validate(header, parent)).isEqualTo(expectedResult); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasUsageValidationRuleTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasUsageValidationRuleTest.java index 06dff080461d..a06fa0c70011 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasUsageValidationRuleTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/GasUsageValidationRuleTest.java @@ -21,6 +21,7 @@ import java.util.stream.Stream; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -48,4 +49,11 @@ public void test(final long gasUsed, final long gasLimit, final boolean expected assertThat(uut.validate(header, null)).isEqualTo(expectedResult); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/ProofOfWorkValidationRuleTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/ProofOfWorkValidationRuleTest.java index 8d831ab7c4ab..8f11434d1e02 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/ProofOfWorkValidationRuleTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/mainnet/headervalidationrules/ProofOfWorkValidationRuleTest.java @@ -37,6 +37,7 @@ import java.util.stream.Stream; import org.apache.tuweni.units.bigints.UInt256; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -216,4 +217,11 @@ private BlockHeaderFunctions mainnetBlockHashFunction() { final ProtocolSchedule protocolSchedule = ProtocolScheduleFixture.MAINNET; return ScheduleBasedBlockHeaderFunctions.create(protocolSchedule); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/util/BlockchainUtilParameterizedTest.java b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/util/BlockchainUtilParameterizedTest.java index e4f578030920..af673d10d536 100644 --- a/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/util/BlockchainUtilParameterizedTest.java +++ b/ethereum/core/src/test/java/org/hyperledger/besu/ethereum/util/BlockchainUtilParameterizedTest.java @@ -33,6 +33,7 @@ import java.util.stream.Stream; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -131,4 +132,11 @@ public void searchesDescending(final int commonAncestorHeight) { assertThat(maybeAncestorNumber.getAsInt()) .isEqualTo(Math.toIntExact(chainHeight - commonHeader.getNumber())); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/EthPeers.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/EthPeers.java index 851c075290ee..d1a54d4d3d3d 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/EthPeers.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/EthPeers.java @@ -525,7 +525,7 @@ private void ethPeerStatusExchanged(final EthPeer peer) { peer.chainState().updateHeightEstimate(peerHeadBlockHeader.getNumber()); CompletableFuture isServingSnapFuture; - if (SyncMode.isCheckpointSync(syncMode) || SyncMode.isSnapSync(syncMode)) { + if (syncMode == SyncMode.SNAP || syncMode == SyncMode.CHECKPOINT) { // even if we have finished the snap sync, we still want to know if the peer is a snap // server isServingSnapFuture = diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetAccountRangeFromPeerTask.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetAccountRangeFromPeerTask.java index 0624a90589ca..ef48dcf952d9 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetAccountRangeFromPeerTask.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetAccountRangeFromPeerTask.java @@ -17,18 +17,17 @@ import org.hyperledger.besu.ethereum.core.BlockHeader; import org.hyperledger.besu.ethereum.eth.manager.EthContext; import org.hyperledger.besu.ethereum.eth.manager.EthPeer; -import org.hyperledger.besu.ethereum.eth.manager.task.AbstractRetryingPeerTask; +import org.hyperledger.besu.ethereum.eth.manager.task.AbstractRetryingSwitchingPeerTask; import org.hyperledger.besu.ethereum.eth.manager.task.EthTask; import org.hyperledger.besu.ethereum.eth.messages.snap.AccountRangeMessage; import org.hyperledger.besu.plugin.services.MetricsSystem; -import java.util.Optional; import java.util.concurrent.CompletableFuture; import org.apache.tuweni.bytes.Bytes32; public class RetryingGetAccountRangeFromPeerTask - extends AbstractRetryingPeerTask { + extends AbstractRetryingSwitchingPeerTask { public static final int MAX_RETRIES = 4; @@ -46,9 +45,9 @@ private RetryingGetAccountRangeFromPeerTask( final MetricsSystem metricsSystem) { super( ethContext, - MAX_RETRIES, + metricsSystem, data -> data.accounts().isEmpty() && data.proofs().isEmpty(), - metricsSystem); + MAX_RETRIES); this.ethContext = ethContext; this.startKeyHash = startKeyHash; this.endKeyHash = endKeyHash; @@ -67,12 +66,12 @@ public static EthTask forAccountRange( } @Override - protected CompletableFuture executePeerTask( - final Optional assignedPeer) { + protected CompletableFuture executeTaskOnCurrentPeer( + final EthPeer peer) { final GetAccountRangeFromPeerTask task = GetAccountRangeFromPeerTask.forAccountRange( ethContext, startKeyHash, endKeyHash, blockHeader, metricsSystem); - assignedPeer.ifPresent(task::assignPeer); + task.assignPeer(peer); return executeSubTask(task::run) .thenApply( peerResult -> { diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetBytecodeFromPeerTask.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetBytecodeFromPeerTask.java index 3258298f2c7a..e30d062597bd 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetBytecodeFromPeerTask.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetBytecodeFromPeerTask.java @@ -17,19 +17,21 @@ import org.hyperledger.besu.ethereum.core.BlockHeader; import org.hyperledger.besu.ethereum.eth.manager.EthContext; import org.hyperledger.besu.ethereum.eth.manager.EthPeer; -import org.hyperledger.besu.ethereum.eth.manager.task.AbstractRetryingPeerTask; +import org.hyperledger.besu.ethereum.eth.manager.task.AbstractRetryingSwitchingPeerTask; import org.hyperledger.besu.ethereum.eth.manager.task.EthTask; import org.hyperledger.besu.plugin.services.MetricsSystem; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.concurrent.CompletableFuture; import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.bytes.Bytes32; -public class RetryingGetBytecodeFromPeerTask extends AbstractRetryingPeerTask> { +public class RetryingGetBytecodeFromPeerTask + extends AbstractRetryingSwitchingPeerTask> { + + public static final int MAX_RETRIES = 4; private final EthContext ethContext; private final List codeHashes; @@ -41,7 +43,7 @@ private RetryingGetBytecodeFromPeerTask( final List codeHashes, final BlockHeader blockHeader, final MetricsSystem metricsSystem) { - super(ethContext, 4, Map::isEmpty, metricsSystem); + super(ethContext, metricsSystem, Map::isEmpty, MAX_RETRIES); this.ethContext = ethContext; this.codeHashes = codeHashes; this.blockHeader = blockHeader; @@ -57,11 +59,10 @@ public static EthTask> forByteCode( } @Override - protected CompletableFuture> executePeerTask( - final Optional assignedPeer) { + protected CompletableFuture> executeTaskOnCurrentPeer(final EthPeer peer) { final GetBytecodeFromPeerTask task = GetBytecodeFromPeerTask.forBytecode(ethContext, codeHashes, blockHeader, metricsSystem); - assignedPeer.ifPresent(task::assignPeer); + task.assignPeer(peer); return executeSubTask(task::run) .thenApply( peerResult -> { diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetStorageRangeFromPeerTask.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetStorageRangeFromPeerTask.java index 731b0b7623bb..6e977bb4e798 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetStorageRangeFromPeerTask.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetStorageRangeFromPeerTask.java @@ -17,19 +17,20 @@ import org.hyperledger.besu.ethereum.core.BlockHeader; import org.hyperledger.besu.ethereum.eth.manager.EthContext; import org.hyperledger.besu.ethereum.eth.manager.EthPeer; -import org.hyperledger.besu.ethereum.eth.manager.task.AbstractRetryingPeerTask; +import org.hyperledger.besu.ethereum.eth.manager.task.AbstractRetryingSwitchingPeerTask; import org.hyperledger.besu.ethereum.eth.manager.task.EthTask; import org.hyperledger.besu.ethereum.eth.messages.snap.StorageRangeMessage; import org.hyperledger.besu.plugin.services.MetricsSystem; import java.util.List; -import java.util.Optional; import java.util.concurrent.CompletableFuture; import org.apache.tuweni.bytes.Bytes32; public class RetryingGetStorageRangeFromPeerTask - extends AbstractRetryingPeerTask { + extends AbstractRetryingSwitchingPeerTask { + + public static final int MAX_RETRIES = 4; private final EthContext ethContext; private final List accountHashes; @@ -45,7 +46,11 @@ private RetryingGetStorageRangeFromPeerTask( final Bytes32 endKeyHash, final BlockHeader blockHeader, final MetricsSystem metricsSystem) { - super(ethContext, 4, data -> data.proofs().isEmpty() && data.slots().isEmpty(), metricsSystem); + super( + ethContext, + metricsSystem, + data -> data.proofs().isEmpty() && data.slots().isEmpty(), + MAX_RETRIES); this.ethContext = ethContext; this.accountHashes = accountHashes; this.startKeyHash = startKeyHash; @@ -66,12 +71,12 @@ public static EthTask forStorageRange( } @Override - protected CompletableFuture executePeerTask( - final Optional assignedPeer) { + protected CompletableFuture executeTaskOnCurrentPeer( + final EthPeer peer) { final GetStorageRangeFromPeerTask task = GetStorageRangeFromPeerTask.forStorageRange( ethContext, accountHashes, startKeyHash, endKeyHash, blockHeader, metricsSystem); - assignedPeer.ifPresent(task::assignPeer); + task.assignPeer(peer); return executeSubTask(task::run) .thenApply( peerResult -> { diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetTrieNodeFromPeerTask.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetTrieNodeFromPeerTask.java index 1abf0d723027..152fd91712b7 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetTrieNodeFromPeerTask.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/manager/snap/RetryingGetTrieNodeFromPeerTask.java @@ -17,18 +17,20 @@ import org.hyperledger.besu.ethereum.core.BlockHeader; import org.hyperledger.besu.ethereum.eth.manager.EthContext; import org.hyperledger.besu.ethereum.eth.manager.EthPeer; -import org.hyperledger.besu.ethereum.eth.manager.task.AbstractRetryingPeerTask; +import org.hyperledger.besu.ethereum.eth.manager.task.AbstractRetryingSwitchingPeerTask; import org.hyperledger.besu.ethereum.eth.manager.task.EthTask; import org.hyperledger.besu.plugin.services.MetricsSystem; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.concurrent.CompletableFuture; import org.apache.tuweni.bytes.Bytes; -public class RetryingGetTrieNodeFromPeerTask extends AbstractRetryingPeerTask> { +public class RetryingGetTrieNodeFromPeerTask + extends AbstractRetryingSwitchingPeerTask> { + + public static final int MAX_RETRIES = 4; private final EthContext ethContext; private final Map> paths; @@ -40,7 +42,7 @@ private RetryingGetTrieNodeFromPeerTask( final Map> paths, final BlockHeader blockHeader, final MetricsSystem metricsSystem) { - super(ethContext, 4, Map::isEmpty, metricsSystem); + super(ethContext, metricsSystem, Map::isEmpty, MAX_RETRIES); this.ethContext = ethContext; this.paths = paths; this.blockHeader = blockHeader; @@ -56,11 +58,10 @@ public static EthTask> forTrieNodes( } @Override - protected CompletableFuture> executePeerTask( - final Optional assignedPeer) { + protected CompletableFuture> executeTaskOnCurrentPeer(final EthPeer peer) { final GetTrieNodeFromPeerTask task = GetTrieNodeFromPeerTask.forTrieNodes(ethContext, paths, blockHeader, metricsSystem); - assignedPeer.ifPresent(task::assignPeer); + task.assignPeer(peer); return executeSubTask(task::run) .thenApply( peerResult -> { diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DefaultSynchronizer.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DefaultSynchronizer.java index 7605754a65cc..a41ad1812b56 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DefaultSynchronizer.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/DefaultSynchronizer.java @@ -99,8 +99,8 @@ public DefaultSynchronizer( this::calculateTrailingPeerRequirements, metricsSystem); - if (SyncMode.isSnapSync(syncConfig.getSyncMode()) - || SyncMode.isCheckpointSync(syncConfig.getSyncMode())) { + if (syncConfig.getSyncMode() == SyncMode.SNAP + || syncConfig.getSyncMode() == SyncMode.CHECKPOINT) { SnapServerChecker.createAndSetSnapServerChecker(ethContext, metricsSystem); } @@ -145,7 +145,7 @@ public DefaultSynchronizer( worldStateStorageCoordinator, syncState, clock); - } else if (SyncMode.isCheckpointSync(syncConfig.getSyncMode())) { + } else if (syncConfig.getSyncMode() == SyncMode.CHECKPOINT) { this.fastSyncFactory = () -> CheckpointDownloaderFactory.createCheckpointDownloader( diff --git a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/SyncMode.java b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/SyncMode.java index 4f3affbe555a..c69a128c54df 100644 --- a/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/SyncMode.java +++ b/ethereum/eth/src/main/java/org/hyperledger/besu/ethereum/eth/sync/SyncMode.java @@ -27,35 +27,13 @@ public enum SyncMode { // Perform snapsync SNAP, // Perform snapsync but starting from a checkpoint instead of starting from genesis - CHECKPOINT, - // Deprecated and will be removed in 24.4.0 (X_SNAP and X_CHECKPOINT) - X_SNAP, - X_CHECKPOINT; + CHECKPOINT; public String normalize() { - if (this.toString().startsWith("X_")) { - // removes X_ at the beginning - return StringUtils.capitalize(this.toString().substring(2).toLowerCase(Locale.ROOT)); - } - return StringUtils.capitalize(this.toString().toLowerCase(Locale.ROOT)); } public static boolean isFullSync(final SyncMode syncMode) { - return !EnumSet.of( - SyncMode.FAST, - SyncMode.SNAP, - SyncMode.X_SNAP, - SyncMode.CHECKPOINT, - SyncMode.X_CHECKPOINT) - .contains(syncMode); - } - - public static boolean isCheckpointSync(final SyncMode syncMode) { - return X_CHECKPOINT.equals(syncMode) || CHECKPOINT.equals(syncMode); - } - - public static boolean isSnapSync(final SyncMode syncMode) { - return X_SNAP.equals(syncMode) || SNAP.equals(syncMode); + return !EnumSet.of(SyncMode.FAST, SyncMode.SNAP, SyncMode.CHECKPOINT).contains(syncMode); } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/ChainHeadTrackerTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/ChainHeadTrackerTest.java index b46a109c122e..4bad73ebb64b 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/ChainHeadTrackerTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/ChainHeadTrackerTest.java @@ -14,6 +14,7 @@ */ package org.hyperledger.besu.ethereum.eth.sync; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import org.hyperledger.besu.config.GenesisConfigFile; @@ -37,6 +38,7 @@ import java.util.stream.Stream; import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -150,4 +152,11 @@ public void shouldCheckTrialingPeerLimits(final DataStorageFormat storageFormat) private ChainState chainHeadState() { return respondingPeer.getEthPeer().chainState(); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/checkpointsync/CheckPointSyncChainDownloaderTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/checkpointsync/CheckPointSyncChainDownloaderTest.java index 09761081a1de..c623b553f192 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/checkpointsync/CheckPointSyncChainDownloaderTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/checkpointsync/CheckPointSyncChainDownloaderTest.java @@ -48,6 +48,7 @@ import java.util.stream.Stream; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -124,8 +125,10 @@ public void setup(final DataStorageFormat dataStorageFormat) { } @AfterEach - public void tearDown() { - ethProtocolManager.stop(); + void tearDown() { + if (ethContext != null) { + ethProtocolManager.stop(); + } } private ChainDownloader downloader( @@ -208,4 +211,11 @@ public void shouldSyncToPivotBlockInSingleSegment(final DataStorageFormat storag assertThat(localBlockchain.getChainHeadHeader()) .isEqualTo(otherBlockchain.getBlockHeader(pivotBlockNumber).get()); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastDownloaderFactoryTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastDownloaderFactoryTest.java index e100c036989a..b5be361bf4b7 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastDownloaderFactoryTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastDownloaderFactoryTest.java @@ -48,6 +48,7 @@ import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; @@ -254,4 +255,11 @@ private void initDataDirectory(final boolean isPivotBlockHeaderFileExist) { when(fastSyncDir.toFile()).thenReturn(fastSyncDirFile); when(dataDirectory.resolve(anyString())).thenReturn(fastSyncDir); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncActionsTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncActionsTest.java index d29bb7260e5c..68caf2182c0f 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncActionsTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncActionsTest.java @@ -53,6 +53,7 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Stream; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -539,4 +540,11 @@ private FastSyncActions createFastSyncActions( pivotBlockSelector, new NoOpMetricsSystem()); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncChainDownloaderTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncChainDownloaderTest.java index a731185167ab..f7a8a9ee5456 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncChainDownloaderTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncChainDownloaderTest.java @@ -44,6 +44,7 @@ import java.util.stream.Stream; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -95,7 +96,9 @@ public void setup(final DataStorageFormat storageFormat) { @AfterEach public void tearDown() { - ethProtocolManager.stop(); + if (ethProtocolManager != null) { + ethProtocolManager.stop(); + } } private ChainDownloader downloader( @@ -222,4 +225,11 @@ public void recoversFromSyncTargetDisconnect(final DataStorageFormat storageForm assertThat(localBlockchain.getChainHeadHeader()) .isEqualTo(otherBlockchain.getBlockHeader(pivotBlockNumber).get()); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncDownloaderTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncDownloaderTest.java index ae252a39f47b..e929b72ff99f 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncDownloaderTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/FastSyncDownloaderTest.java @@ -50,6 +50,7 @@ import java.util.stream.Stream; import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -605,4 +606,11 @@ private void assertCompletedExceptionally( return null; }); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockConfirmerTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockConfirmerTest.java index 050724ef55a9..2a8a31108406 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockConfirmerTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockConfirmerTest.java @@ -42,6 +42,7 @@ import java.util.stream.Stream; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -341,4 +342,11 @@ private Responder responderForFakeBlocks(final long... blockNumbers) { return RespondingEthPeer.blockchainResponder(mockBlockchain); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockRetrieverTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockRetrieverTest.java index 41317fdab38e..a377ee782788 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockRetrieverTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/PivotBlockRetrieverTest.java @@ -45,6 +45,7 @@ import java.util.stream.Stream; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -425,4 +426,11 @@ private Responder responderForFakeBlocks(final long... blockNumbers) { return RespondingEthPeer.blockchainResponder(mockBlockchain); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/worldstate/FastWorldDownloadStateTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/worldstate/FastWorldDownloadStateTest.java index 44847ffb93ed..a808ac7078ad 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/worldstate/FastWorldDownloadStateTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fastsync/worldstate/FastWorldDownloadStateTest.java @@ -43,6 +43,7 @@ import java.util.stream.Stream; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -265,4 +266,11 @@ private void assertWorldStateStalled(final FastWorldDownloadState state) { .isInstanceOf(ExecutionException.class) .hasRootCauseInstanceOf(StalledDownloadException.class); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTest.java index f44c8e2da34e..ded65f6a1228 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTest.java @@ -55,6 +55,7 @@ import org.awaitility.Awaitility; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -107,7 +108,9 @@ public void setupTest(final DataStorageFormat storageFormat) { @AfterEach public void tearDown() { - ethProtocolManager.stop(); + if (ethProtocolManager != null) { + ethProtocolManager.stop(); + } } private ChainDownloader downloader(final SynchronizerConfiguration syncConfig) { @@ -499,4 +502,11 @@ private MutableBlockchain createShortChain( } return shortChain; } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTotalTerminalDifficultyTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTotalTerminalDifficultyTest.java index c9f22ec5f01b..4eeb3bbc635e 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTotalTerminalDifficultyTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncChainDownloaderTotalTerminalDifficultyTest.java @@ -39,6 +39,7 @@ import java.util.stream.Stream; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -91,7 +92,9 @@ public void setupTest(final DataStorageFormat storageFormat) { @AfterEach public void tearDown() { - ethProtocolManager.stop(); + if (ethProtocolManager != null) { + ethProtocolManager.stop(); + } } private ChainDownloader downloader( @@ -179,4 +182,11 @@ public void syncsFullyAndContinuesWhenTTDNotSpecified(final DataStorageFormat st assertThat(future.isDone()).isFalse(); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncDownloaderTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncDownloaderTest.java index cb0f399ff81b..a44ddc07bb03 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncDownloaderTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncDownloaderTest.java @@ -36,6 +36,7 @@ import java.util.stream.Stream; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -82,7 +83,9 @@ public void setupTest(final DataStorageFormat storageFormat) { @AfterEach public void tearDown() { - ethProtocolManager.stop(); + if (ethProtocolManager != null) { + ethProtocolManager.stop(); + } } private FullSyncDownloader downloader(final SynchronizerConfiguration syncConfig) { @@ -129,4 +132,11 @@ public void shouldNotLimitTrailingPeersWhenInSync(final DataStorageFormat storag assertThat(synchronizer.calculateTrailingPeerRequirements()) .isEqualTo(TrailingPeerRequirements.UNRESTRICTED); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncTargetManagerTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncTargetManagerTest.java index d10be455ea5b..027bd270d298 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncTargetManagerTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/fullsync/FullSyncTargetManagerTest.java @@ -43,6 +43,7 @@ import java.util.stream.Stream; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -100,7 +101,9 @@ public void setup(final DataStorageFormat storageFormat) { @AfterEach public void tearDown() { - ethProtocolManager.stop(); + if (ethProtocolManager != null) { + ethProtocolManager.stop(); + } } @ParameterizedTest @@ -180,4 +183,11 @@ public void shouldAllowSyncTargetWhenIfWorldStateIsAvailableForCommonAncestor( new SyncTarget(bestPeer.getEthPeer(), localBlockchain.getChainHeadHeader())); assertThat(bestPeer.getPeerConnection().isDisconnected()).isFalse(); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/snapsync/SnapWorldDownloadStateTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/snapsync/SnapWorldDownloadStateTest.java index 28298acb9c36..d1e90b5eb6e2 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/snapsync/SnapWorldDownloadStateTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/snapsync/SnapWorldDownloadStateTest.java @@ -62,6 +62,7 @@ import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.bytes.Bytes32; import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -493,4 +494,11 @@ public void shouldNotCompleteReturnedFutureWhenNoPendingTasksRemainAndFlatDBHeal .isEmpty(); assertThat(downloadState.isDownloading()).isTrue(); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/snapsync/request/heal/StorageTrieNodeHealingRequestTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/snapsync/request/heal/StorageTrieNodeHealingRequestTest.java index f36a64c8760d..4f8299f9acdc 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/snapsync/request/heal/StorageTrieNodeHealingRequestTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/snapsync/request/heal/StorageTrieNodeHealingRequestTest.java @@ -14,6 +14,8 @@ */ package org.hyperledger.besu.ethereum.eth.sync.snapsync.request.heal; +import static org.assertj.core.api.Assertions.assertThat; + import org.hyperledger.besu.datatypes.Address; import org.hyperledger.besu.datatypes.Hash; import org.hyperledger.besu.ethereum.core.InMemoryKeyValueStorageProvider; @@ -36,6 +38,7 @@ import org.apache.tuweni.bytes.Bytes; import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; @@ -115,4 +118,11 @@ void shouldDetectMissingData(final DataStorageFormat storageFormat) { Assertions.assertThat(request.getExistingData(worldStateStorageCoordinator)).isEmpty(); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskParameterizedTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskParameterizedTest.java index 71c0bcb5440a..73d5e5138b4b 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskParameterizedTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/DetermineCommonAncestorTaskParameterizedTest.java @@ -51,6 +51,7 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -174,4 +175,11 @@ public void searchesAgainstNetwork(final int headerRequestSize, final int common assertThat(actualResult.get().getHash()) .isEqualTo(MainnetBlockHeaderFunctions.createHash(commonHeader)); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/PersistBlockTaskTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/PersistBlockTaskTest.java index d789405763cb..dd5d79b66701 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/PersistBlockTaskTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/sync/tasks/PersistBlockTaskTest.java @@ -40,6 +40,7 @@ import java.util.stream.Stream; import org.awaitility.Awaitility; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -420,4 +421,11 @@ public void cancelAfterRunning(final DataStorageFormat storageFormat) { assertThat(result.isCancelled()).isTrue(); assertThat(blockchain.contains(nextBlock.getHash())).isFalse(); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPoolReplacementHandlerTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPoolReplacementHandlerTest.java index f57d6fac3e75..aca1f202c267 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPoolReplacementHandlerTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionPoolReplacementHandlerTest.java @@ -30,6 +30,7 @@ import java.util.Optional; import java.util.stream.Collectors; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -88,4 +89,11 @@ private static PendingTransaction mockTransactionInfo() { when(pendingTransaction.getTransaction()).thenReturn(transaction); return pendingTransaction; } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionReplacementByFeeMarketRuleTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionReplacementByFeeMarketRuleTest.java index 527b26e2512e..eb22184a2b2a 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionReplacementByFeeMarketRuleTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionReplacementByFeeMarketRuleTest.java @@ -24,6 +24,7 @@ import java.util.Collection; import java.util.Optional; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -107,4 +108,11 @@ public void shouldReplace( .shouldReplace(oldTx, newTx, baseFee)) .isEqualTo(expected); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionReplacementByGasPriceRuleTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionReplacementByGasPriceRuleTest.java index d4f851e19077..651666fdd55b 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionReplacementByGasPriceRuleTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionReplacementByGasPriceRuleTest.java @@ -24,6 +24,7 @@ import java.util.Collection; import java.util.Optional; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -84,4 +85,11 @@ public void shouldReplace( .shouldReplace(oldTx, newTx, baseFee)) .isEqualTo(expected); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionReplacementRulesTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionReplacementRulesTest.java index a6a5524eedfe..da7b465583d9 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionReplacementRulesTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/TransactionReplacementRulesTest.java @@ -27,6 +27,7 @@ import java.util.Collection; import java.util.Optional; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -106,4 +107,11 @@ public void shouldReplace( .shouldReplace(oldTx, newTx, mockHeader)) .isEqualTo(expected); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/layered/LayersTest.java b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/layered/LayersTest.java index 69a7468ecbe1..36fa20096474 100644 --- a/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/layered/LayersTest.java +++ b/ethereum/eth/src/test/java/org/hyperledger/besu/ethereum/eth/transactions/layered/LayersTest.java @@ -58,6 +58,7 @@ import java.util.OptionalLong; import java.util.stream.Stream; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -1623,4 +1624,11 @@ enum Sender { this.hasPriority = hasPriority; } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/evmtool/build.gradle b/ethereum/evmtool/build.gradle index aaddc354d5f5..5712e7174a3f 100644 --- a/ethereum/evmtool/build.gradle +++ b/ethereum/evmtool/build.gradle @@ -15,7 +15,7 @@ */ plugins { - id 'org.graalvm.buildtools.native' version '0.9.17' + id 'org.graalvm.buildtools.native' version '0.10.2' } apply plugin: 'java-library' diff --git a/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/BlockchainTestSubCommand.java b/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/BlockchainTestSubCommand.java new file mode 100644 index 000000000000..5b9bc2cdfe01 --- /dev/null +++ b/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/BlockchainTestSubCommand.java @@ -0,0 +1,254 @@ +/* + * Copyright ConsenSys AG. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package org.hyperledger.besu.evmtool; + +import static java.nio.charset.StandardCharsets.UTF_8; +import static org.hyperledger.besu.evmtool.BlockchainTestSubCommand.COMMAND_NAME; + +import org.hyperledger.besu.crypto.SignatureAlgorithmFactory; +import org.hyperledger.besu.ethereum.ProtocolContext; +import org.hyperledger.besu.ethereum.chain.MutableBlockchain; +import org.hyperledger.besu.ethereum.core.Block; +import org.hyperledger.besu.ethereum.core.BlockHeader; +import org.hyperledger.besu.ethereum.core.BlockImporter; +import org.hyperledger.besu.ethereum.core.MutableWorldState; +import org.hyperledger.besu.ethereum.mainnet.BlockImportResult; +import org.hyperledger.besu.ethereum.mainnet.HeaderValidationMode; +import org.hyperledger.besu.ethereum.mainnet.ProtocolSchedule; +import org.hyperledger.besu.ethereum.mainnet.ProtocolSpec; +import org.hyperledger.besu.ethereum.referencetests.BlockchainReferenceTestCaseSpec; +import org.hyperledger.besu.ethereum.referencetests.ReferenceTestProtocolSchedules; +import org.hyperledger.besu.ethereum.rlp.RLPException; +import org.hyperledger.besu.evm.EVM; +import org.hyperledger.besu.evm.EvmSpecVersion; +import org.hyperledger.besu.evm.account.AccountState; +import org.hyperledger.besu.evm.internal.EvmConfiguration.WorldUpdaterMode; + +import java.io.BufferedReader; +import java.io.File; +import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Supplier; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.base.Suppliers; +import org.apache.tuweni.bytes.Bytes32; +import picocli.CommandLine.Command; +import picocli.CommandLine.Option; +import picocli.CommandLine.Parameters; +import picocli.CommandLine.ParentCommand; + +/** + * This class, BlockchainTestSubCommand, is a command-line interface (CLI) command that executes an + * Ethereum State Test. It implements the Runnable interface, meaning it can be used in a thread of + * execution. + * + *

The class is annotated with @CommandLine.Command, which is a PicoCLI annotation that + * designates this class as a command-line command. The annotation parameters define the command's + * name, description, whether it includes standard help options, and the version provider. + * + *

The command's functionality is defined in the run() method, which is overridden from the + * Runnable interface. + */ +@Command( + name = COMMAND_NAME, + description = "Execute an Ethereum Blockchain Test.", + mixinStandardHelpOptions = true, + versionProvider = VersionProvider.class) +public class BlockchainTestSubCommand implements Runnable { + /** + * The name of the command for the BlockchainTestSubCommand. This constant is used as the name + * parameter in the @CommandLine.Command annotation. It defines the command name that users should + * enter on the command line to invoke this command. + */ + public static final String COMMAND_NAME = "block-test"; + + static final Supplier referenceTestProtocolSchedules = + Suppliers.memoize(ReferenceTestProtocolSchedules::create); + + @Option( + names = {"--test-name"}, + description = "Limit execution to one named test.") + private String testName = null; + + @ParentCommand private final EvmToolCommand parentCommand; + + // picocli does it magically + @Parameters private final List blockchainTestFiles = new ArrayList<>(); + + /** + * Default constructor for the BlockchainTestSubCommand class. This constructor doesn't take any + * arguments and initializes the parentCommand to null. PicoCLI requires this constructor. + */ + @SuppressWarnings("unused") + public BlockchainTestSubCommand() { + // PicoCLI requires this + this(null); + } + + BlockchainTestSubCommand(final EvmToolCommand parentCommand) { + this.parentCommand = parentCommand; + } + + @Override + public void run() { + // presume ethereum mainnet for reference and state tests + SignatureAlgorithmFactory.setDefaultInstance(); + final ObjectMapper blockchainTestMapper = JsonUtils.createObjectMapper(); + + final JavaType javaType = + blockchainTestMapper + .getTypeFactory() + .constructParametricType( + Map.class, String.class, BlockchainReferenceTestCaseSpec.class); + try { + if (blockchainTestFiles.isEmpty()) { + // if no state tests were specified, use standard input to get filenames + final BufferedReader in = + new BufferedReader(new InputStreamReader(parentCommand.in, UTF_8)); + while (true) { + final String fileName = in.readLine(); + if (fileName == null) { + // Reached end-of-file. Stop the loop. + break; + } + final File file = new File(fileName); + if (file.isFile()) { + final Map blockchainTests = + blockchainTestMapper.readValue(file, javaType); + executeBlockchainTest(blockchainTests); + } else { + parentCommand.out.println("File not found: " + fileName); + } + } + } else { + for (final Path blockchainTestFile : blockchainTestFiles) { + final Map blockchainTests; + if ("stdin".equals(blockchainTestFile.toString())) { + blockchainTests = blockchainTestMapper.readValue(parentCommand.in, javaType); + } else { + blockchainTests = blockchainTestMapper.readValue(blockchainTestFile.toFile(), javaType); + } + executeBlockchainTest(blockchainTests); + } + } + } catch (final JsonProcessingException jpe) { + parentCommand.out.println("File content error: " + jpe); + } catch (final IOException e) { + System.err.println("Unable to read state file"); + e.printStackTrace(System.err); + } + } + + private void executeBlockchainTest( + final Map blockchainTests) { + blockchainTests.forEach(this::traceTestSpecs); + } + + private void traceTestSpecs(final String test, final BlockchainReferenceTestCaseSpec spec) { + if (testName != null && !testName.equals(test)) { + parentCommand.out.println("Skipping test: " + test); + return; + } + parentCommand.out.println("Considering " + test); + + final BlockHeader genesisBlockHeader = spec.getGenesisBlockHeader(); + final MutableWorldState worldState = + spec.getWorldStateArchive() + .getMutable(genesisBlockHeader.getStateRoot(), genesisBlockHeader.getHash()) + .orElseThrow(); + + final ProtocolSchedule schedule = + referenceTestProtocolSchedules.get().getByName(spec.getNetwork()); + + final MutableBlockchain blockchain = spec.getBlockchain(); + final ProtocolContext context = spec.getProtocolContext(); + + for (final BlockchainReferenceTestCaseSpec.CandidateBlock candidateBlock : + spec.getCandidateBlocks()) { + if (!candidateBlock.isExecutable()) { + return; + } + + try { + final Block block = candidateBlock.getBlock(); + + final ProtocolSpec protocolSpec = schedule.getByBlockHeader(block.getHeader()); + final BlockImporter blockImporter = protocolSpec.getBlockImporter(); + + verifyJournaledEVMAccountCompatability(worldState, protocolSpec); + + final HeaderValidationMode validationMode = + "NoProof".equalsIgnoreCase(spec.getSealEngine()) + ? HeaderValidationMode.LIGHT + : HeaderValidationMode.FULL; + final BlockImportResult importResult = + blockImporter.importBlock(context, block, validationMode, validationMode); + + if (importResult.isImported() != candidateBlock.isValid()) { + parentCommand.out.printf( + "Block %d (%s) %s%n", + block.getHeader().getNumber(), + block.getHash(), + importResult.isImported() ? "Failed to be rejected" : "Failed to import"); + } else { + parentCommand.out.printf( + "Block %d (%s) %s%n", + block.getHeader().getNumber(), + block.getHash(), + importResult.isImported() ? "Imported" : "Rejected (correctly)"); + } + } catch (final RLPException e) { + if (candidateBlock.isValid()) { + parentCommand.out.printf( + "Block %d (%s) should have imported but had an RLP exception %s%n", + candidateBlock.getBlock().getHeader().getNumber(), + candidateBlock.getBlock().getHash(), + e.getMessage()); + } + } + } + if (!blockchain.getChainHeadHash().equals(spec.getLastBlockHash())) { + parentCommand.out.printf( + "Chain header mismatch, have %s want %s - %s%n", + blockchain.getChainHeadHash(), spec.getLastBlockHash(), test); + } else { + parentCommand.out.println("Chain import successful - " + test); + } + } + + void verifyJournaledEVMAccountCompatability( + final MutableWorldState worldState, final ProtocolSpec protocolSpec) { + EVM evm = protocolSpec.getEvm(); + if (evm.getEvmConfiguration().worldUpdaterMode() == WorldUpdaterMode.JOURNALED) { + if (worldState + .streamAccounts(Bytes32.ZERO, Integer.MAX_VALUE) + .anyMatch(AccountState::isEmpty)) { + parentCommand.out.println("Journaled account configured and empty account detected"); + } + + if (EvmSpecVersion.SPURIOUS_DRAGON.compareTo(evm.getEvmVersion()) > 0) { + parentCommand.out.println( + "Journaled account configured and fork prior to the merge specified"); + } + } + } +} diff --git a/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/EvmToolCommand.java b/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/EvmToolCommand.java index a3bed6b54beb..898f1dd4b6a0 100644 --- a/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/EvmToolCommand.java +++ b/ethereum/evmtool/src/main/java/org/hyperledger/besu/evmtool/EvmToolCommand.java @@ -101,6 +101,7 @@ subcommands = { BenchmarkSubCommand.class, B11rSubCommand.class, + BlockchainTestSubCommand.class, CodeValidateSubCommand.class, EOFTestSubCommand.class, PrettyPrintSubCommand.class, @@ -370,15 +371,18 @@ public boolean hasFork() { public void run() { LogConfigurator.setLevel("", "OFF"); try { + GenesisFileModule genesisFileModule; + if (network != null) { + genesisFileModule = GenesisFileModule.createGenesisModule(network); + } else if (genesisFile != null) { + genesisFileModule = GenesisFileModule.createGenesisModule(genesisFile); + } else { + genesisFileModule = GenesisFileModule.createGenesisModule(NetworkName.DEV); + } final EvmToolComponent component = DaggerEvmToolComponent.builder() .dataStoreModule(new DataStoreModule()) - .genesisFileModule( - network == null - ? genesisFile == null - ? GenesisFileModule.createGenesisModule(NetworkName.DEV) - : GenesisFileModule.createGenesisModule(genesisFile) - : GenesisFileModule.createGenesisModule(network)) + .genesisFileModule(genesisFileModule) .evmToolCommandOptionsModule(daggerOptions) .metricsSystemModule(new MetricsSystemModule()) .build(); diff --git a/ethereum/evmtool/src/test/java/org/hyperledger/besu/evmtool/EvmToolSpecTests.java b/ethereum/evmtool/src/test/java/org/hyperledger/besu/evmtool/EvmToolSpecTests.java index 1892a472b024..24cd858ba7b7 100644 --- a/ethereum/evmtool/src/test/java/org/hyperledger/besu/evmtool/EvmToolSpecTests.java +++ b/ethereum/evmtool/src/test/java/org/hyperledger/besu/evmtool/EvmToolSpecTests.java @@ -45,6 +45,7 @@ import com.fasterxml.jackson.databind.ObjectReader; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.JsonNodeType; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -53,6 +54,10 @@ public class EvmToolSpecTests { static final ObjectMapper objectMapper = new ObjectMapper(); static final ObjectReader specReader = objectMapper.reader(); + public static Object[][] blocktestTests() { + return findSpecFiles(new String[] {"block-test"}); + } + public static Object[][] b11rTests() { return findSpecFiles(new String[] {"b11r"}); } @@ -114,7 +119,14 @@ private static Object[] pathToParams(final String subDir, final File file) { } @ParameterizedTest(name = "{0}") - @MethodSource({"b11rTests", "prettyPrintTests", "stateTestTests", "t8nTests", "traceTests"}) + @MethodSource({ + "blocktestTests", + "b11rTests", + "prettyPrintTests", + "stateTestTests", + "t8nTests", + "traceTests" + }) void testBySpec( final String file, final JsonNode cliNode, @@ -172,4 +184,11 @@ void testBySpec( assertThat(actualNode).isEqualTo(stdoutNode); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/evmtool/src/test/resources/org/hyperledger/besu/evmtool/block-test/prague-eof-rjump.json b/ethereum/evmtool/src/test/resources/org/hyperledger/besu/evmtool/block-test/prague-eof-rjump.json new file mode 100644 index 000000000000..b9d2e541795c --- /dev/null +++ b/ethereum/evmtool/src/test/resources/org/hyperledger/besu/evmtool/block-test/prague-eof-rjump.json @@ -0,0 +1,250 @@ +{ + "cli": [ + "block-test", + "stdin" + ], + "stdin": { + "tests/prague/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_zero[fork_PragueEIP7692-blockchain_test]": { + "network": "Prague", + "genesisBlockHeader": { + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "uncleHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "coinbase": "0x0000000000000000000000000000000000000000", + "stateRoot": "0x34ccf8774a5b8833da9451a3f7f8a0af0147956c058f0831dab07c348d7ac0d9", + "transactionsTrie": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "receiptTrie": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "difficulty": "0x00", + "number": "0x00", + "gasLimit": "0x016345785d8a0000", + "gasUsed": "0x00", + "timestamp": "0x00", + "extraData": "0x00", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0000000000000000", + "baseFeePerGas": "0x07", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "blobGasUsed": "0x00", + "excessBlobGas": "0x00", + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", + "requestsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "hash": "0xc9397e8a1b99cbb2b885852fde56de8fa686091a4f4430163f5237d7aaf33a14" + }, + "pre": { + "0x00000000219ab540356cbb839cbe05303d7705fa": { + "nonce": "0x01", + "balance": "0x00", + "code": "0x60806040526004361061003f5760003560e01c806301ffc9a71461004457806322895118146100a4578063621fd130146101ba578063c5f2892f14610244575b600080fd5b34801561005057600080fd5b506100906004803603602081101561006757600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661026b565b604080519115158252519081900360200190f35b6101b8600480360360808110156100ba57600080fd5b8101906020810181356401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91939092909160208101903564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91939092909160208101903564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b919350915035610304565b005b3480156101c657600080fd5b506101cf6110b5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102095781810151838201526020016101f1565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b506102596110c7565b60408051918252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806102fe57507fffffffff0000000000000000000000000000000000000000000000000000000082167f8564090700000000000000000000000000000000000000000000000000000000145b92915050565b6030861461035d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118056026913960400191505060405180910390fd5b602084146103b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061179c6036913960400191505060405180910390fd5b6060821461040f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806118786029913960400191505060405180910390fd5b670de0b6b3a7640000341015610470576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118526026913960400191505060405180910390fd5b633b9aca003406156104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806117d26033913960400191505060405180910390fd5b633b9aca00340467ffffffffffffffff811115610535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061182b6027913960400191505060405180910390fd5b6060610540826114ba565b90507f649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c589898989858a8a6105756020546114ba565b6040805160a0808252810189905290819060208201908201606083016080840160c085018e8e80828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910187810386528c815260200190508c8c808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920188810386528c5181528c51602091820193918e019250908190849084905b83811015610648578181015183820152602001610630565b50505050905090810190601f1680156106755780820380516001836020036101000a031916815260200191505b5086810383528881526020018989808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018881038452895181528951602091820193918b019250908190849084905b838110156106ef5781810151838201526020016106d7565b50505050905090810190601f16801561071c5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390a1600060028a8a600060801b604051602001808484808284377fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941691909301908152604080517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818403018152601090920190819052815191955093508392506020850191508083835b602083106107fc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107bf565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610859573d6000803e3d6000fd5b5050506040513d602081101561086e57600080fd5b5051905060006002806108846040848a8c6116fe565b6040516020018083838082843780830192505050925050506040516020818303038152906040526040518082805190602001908083835b602083106108f857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016108bb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610955573d6000803e3d6000fd5b5050506040513d602081101561096a57600080fd5b5051600261097b896040818d6116fe565b60405160009060200180848480828437919091019283525050604080518083038152602092830191829052805190945090925082918401908083835b602083106109f457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109b7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610a51573d6000803e3d6000fd5b5050506040513d6020811015610a6657600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610ada57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a9d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610b37573d6000803e3d6000fd5b5050506040513d6020811015610b4c57600080fd5b50516040805160208101858152929350600092600292839287928f928f92018383808284378083019250505093505050506040516020818303038152906040526040518082805190602001908083835b60208310610bd957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b9c565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610c36573d6000803e3d6000fd5b5050506040513d6020811015610c4b57600080fd5b50516040518651600291889160009188916020918201918291908601908083835b60208310610ca957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c6c565b6001836020036101000a0380198251168184511680821785525050505050509050018367ffffffffffffffff191667ffffffffffffffff1916815260180182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d4e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d11565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610dab573d6000803e3d6000fd5b5050506040513d6020811015610dc057600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610e3457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610df7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610e91573d6000803e3d6000fd5b5050506040513d6020811015610ea657600080fd5b50519050858114610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806117486054913960600191505060405180910390fd5b60205463ffffffff11610f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117276021913960400191505060405180910390fd5b602080546001019081905560005b60208110156110a9578160011660011415610fa0578260008260208110610f9157fe5b0155506110ac95505050505050565b600260008260208110610faf57fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061102557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fe8565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015611082573d6000803e3d6000fd5b5050506040513d602081101561109757600080fd5b50519250600282049150600101610f6e565b50fe5b50505050505050565b60606110c26020546114ba565b905090565b6020546000908190815b60208110156112f05781600116600114156111e6576002600082602081106110f557fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061116b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161112e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156111c8573d6000803e3d6000fd5b5050506040513d60208110156111dd57600080fd5b505192506112e2565b600283602183602081106111f657fe5b015460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061126b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161122e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156112c8573d6000803e3d6000fd5b5050506040513d60208110156112dd57600080fd5b505192505b6002820491506001016110d1565b506002826112ff6020546114ba565b600060401b6040516020018084815260200183805190602001908083835b6020831061135a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161131d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790527fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000095909516920191825250604080518083037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8018152601890920190819052815191955093508392850191508083835b6020831061143f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611402565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa15801561149c573d6000803e3d6000fd5b5050506040513d60208110156114b157600080fd5b50519250505090565b60408051600880825281830190925260609160208201818036833701905050905060c082901b8060071a60f81b826000815181106114f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060061a60f81b8260018151811061153757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060051a60f81b8260028151811061157a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060041a60f81b826003815181106115bd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060031a60f81b8260048151811061160057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060021a60f81b8260058151811061164357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060011a60f81b8260068151811061168657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060001a60f81b826007815181106116c957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050919050565b6000808585111561170d578182fd5b83861115611719578182fd5b505082019391909203915056fe4465706f736974436f6e74726163743a206d65726b6c6520747265652066756c6c4465706f736974436f6e74726163743a207265636f6e7374727563746564204465706f7369744461746120646f6573206e6f74206d6174636820737570706c696564206465706f7369745f646174615f726f6f744465706f736974436f6e74726163743a20696e76616c6964207769746864726177616c5f63726564656e7469616c73206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c7565206e6f74206d756c7469706c65206f6620677765694465706f736974436f6e74726163743a20696e76616c6964207075626b6579206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f20686967684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f206c6f774465706f736974436f6e74726163743a20696e76616c6964207369676e6174757265206c656e677468a2646970667358221220dceca8706b29e917dacf25fceef95acac8d90d765ac926663ce4096195952b6164736f6c634300060b0033", + "storage": { + "0x22": "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0x23": "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x24": "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x25": "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x26": "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0x27": "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x28": "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x29": "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x2a": "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0x2b": "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x2c": "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0x2d": "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0x2e": "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0x2f": "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0x30": "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x31": "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x32": "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x33": "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0x34": "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0x35": "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x36": "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0x37": "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0x38": "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x39": "0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0", + "0x3a": "0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544", + "0x3b": "0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765", + "0x3c": "0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4", + "0x3d": "0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1", + "0x3e": "0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636", + "0x3f": "0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c", + "0x40": "0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7" + } + }, + "0x00a3ca265ebcb825b45f985a16cefb49958ce017": { + "nonce": "0x01", + "balance": "0x00", + "code": "0x3373fffffffffffffffffffffffffffffffffffffffe146090573615156028575f545f5260205ff35b366038141561012e5760115f54600182026001905f5b5f82111560595781019083028483029004916001019190603e565b90939004341061012e57600154600101600155600354806003026004013381556001015f3581556001016020359055600101600355005b6003546002548082038060101160a4575060105b5f5b81811460dd5780604c02838201600302600401805490600101805490600101549160601b83528260140152906034015260010160a6565b910180921460ed579060025560f8565b90505f6002555f6003555b5f548061049d141561010757505f5b60015460028282011161011c5750505f610122565b01600290035b5f555f600155604c025ff35b5f5ffd", + "storage": {} + }, + "0x0aae40965e6800cd9b1f4b05ff21581047e3f91e": { + "nonce": "0x01", + "balance": "0x00", + "code": "0x3373fffffffffffffffffffffffffffffffffffffffe1460575767ffffffffffffffff5f3511605357600143035f3511604b575f35612000014311604b57611fff5f3516545f5260205ff35b5f5f5260205ff35b5f5ffd5b5f35611fff60014303165500", + "storage": {} + }, + "0x000f3df6d732807ef1319fb7b8bb8522d0beac02": { + "nonce": "0x01", + "balance": "0x00", + "code": "0x3373fffffffffffffffffffffffffffffffffffffffe14604d57602036146024575f5ffd5b5f35801560495762001fff810690815414603c575f5ffd5b62001fff01545f5260205ff35b5f5ffd5b62001fff42064281555f359062001fff015500", + "storage": {} + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b": { + "nonce": "0x00", + "balance": "0x3635c9adc5dea00000", + "code": "0x", + "storage": {} + }, + "0x0000000000000000000000000000000000001000": { + "nonce": "0x01", + "balance": "0x00", + "code": "0xef0001010004020001000a0400000000800002e0000061201560015500", + "storage": {} + } + }, + "postState": { + "0x0000000000000000000000000000000000001000": { + "nonce": "0x01", + "balance": "0x00", + "code": "0xef0001010004020001000a0400000000800002e0000061201560015500", + "storage": { + "0x01": "0x2015" + } + }, + "0x00000000219ab540356cbb839cbe05303d7705fa": { + "nonce": "0x01", + "balance": "0x00", + "code": "0x60806040526004361061003f5760003560e01c806301ffc9a71461004457806322895118146100a4578063621fd130146101ba578063c5f2892f14610244575b600080fd5b34801561005057600080fd5b506100906004803603602081101561006757600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661026b565b604080519115158252519081900360200190f35b6101b8600480360360808110156100ba57600080fd5b8101906020810181356401000000008111156100d557600080fd5b8201836020820111156100e757600080fd5b8035906020019184600183028401116401000000008311171561010957600080fd5b91939092909160208101903564010000000081111561012757600080fd5b82018360208201111561013957600080fd5b8035906020019184600183028401116401000000008311171561015b57600080fd5b91939092909160208101903564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b919350915035610304565b005b3480156101c657600080fd5b506101cf6110b5565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102095781810151838201526020016101f1565b50505050905090810190601f1680156102365780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025057600080fd5b506102596110c7565b60408051918252519081900360200190f35b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806102fe57507fffffffff0000000000000000000000000000000000000000000000000000000082167f8564090700000000000000000000000000000000000000000000000000000000145b92915050565b6030861461035d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118056026913960400191505060405180910390fd5b602084146103b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603681526020018061179c6036913960400191505060405180910390fd5b6060821461040f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806118786029913960400191505060405180910390fd5b670de0b6b3a7640000341015610470576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806118526026913960400191505060405180910390fd5b633b9aca003406156104cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806117d26033913960400191505060405180910390fd5b633b9aca00340467ffffffffffffffff811115610535576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061182b6027913960400191505060405180910390fd5b6060610540826114ba565b90507f649bbc62d0e31342afea4e5cd82d4049e7e1ee912fc0889aa790803be39038c589898989858a8a6105756020546114ba565b6040805160a0808252810189905290819060208201908201606083016080840160c085018e8e80828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910187810386528c815260200190508c8c808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690920188810386528c5181528c51602091820193918e019250908190849084905b83811015610648578181015183820152602001610630565b50505050905090810190601f1680156106755780820380516001836020036101000a031916815260200191505b5086810383528881526020018989808284376000838201819052601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018881038452895181528951602091820193918b019250908190849084905b838110156106ef5781810151838201526020016106d7565b50505050905090810190601f16801561071c5780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390a1600060028a8a600060801b604051602001808484808284377fffffffffffffffffffffffffffffffff0000000000000000000000000000000090941691909301908152604080517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0818403018152601090920190819052815191955093508392506020850191508083835b602083106107fc57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016107bf565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610859573d6000803e3d6000fd5b5050506040513d602081101561086e57600080fd5b5051905060006002806108846040848a8c6116fe565b6040516020018083838082843780830192505050925050506040516020818303038152906040526040518082805190602001908083835b602083106108f857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016108bb565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610955573d6000803e3d6000fd5b5050506040513d602081101561096a57600080fd5b5051600261097b896040818d6116fe565b60405160009060200180848480828437919091019283525050604080518083038152602092830191829052805190945090925082918401908083835b602083106109f457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016109b7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610a51573d6000803e3d6000fd5b5050506040513d6020811015610a6657600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610ada57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610a9d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610b37573d6000803e3d6000fd5b5050506040513d6020811015610b4c57600080fd5b50516040805160208101858152929350600092600292839287928f928f92018383808284378083019250505093505050506040516020818303038152906040526040518082805190602001908083835b60208310610bd957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610b9c565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610c36573d6000803e3d6000fd5b5050506040513d6020811015610c4b57600080fd5b50516040518651600291889160009188916020918201918291908601908083835b60208310610ca957805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610c6c565b6001836020036101000a0380198251168184511680821785525050505050509050018367ffffffffffffffff191667ffffffffffffffff1916815260180182815260200193505050506040516020818303038152906040526040518082805190602001908083835b60208310610d4e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d11565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610dab573d6000803e3d6000fd5b5050506040513d6020811015610dc057600080fd5b5051604080516020818101949094528082019290925280518083038201815260609092019081905281519192909182918401908083835b60208310610e3457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610df7565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015610e91573d6000803e3d6000fd5b5050506040513d6020811015610ea657600080fd5b50519050858114610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260548152602001806117486054913960600191505060405180910390fd5b60205463ffffffff11610f60576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806117276021913960400191505060405180910390fd5b602080546001019081905560005b60208110156110a9578160011660011415610fa0578260008260208110610f9157fe5b0155506110ac95505050505050565b600260008260208110610faf57fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061102557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610fe8565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa158015611082573d6000803e3d6000fd5b5050506040513d602081101561109757600080fd5b50519250600282049150600101610f6e565b50fe5b50505050505050565b60606110c26020546114ba565b905090565b6020546000908190815b60208110156112f05781600116600114156111e6576002600082602081106110f557fe5b01548460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061116b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161112e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156111c8573d6000803e3d6000fd5b5050506040513d60208110156111dd57600080fd5b505192506112e2565b600283602183602081106111f657fe5b015460405160200180838152602001828152602001925050506040516020818303038152906040526040518082805190602001908083835b6020831061126b57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161122e565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa1580156112c8573d6000803e3d6000fd5b5050506040513d60208110156112dd57600080fd5b505192505b6002820491506001016110d1565b506002826112ff6020546114ba565b600060401b6040516020018084815260200183805190602001908083835b6020831061135a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161131d565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790527fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000095909516920191825250604080518083037ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8018152601890920190819052815191955093508392850191508083835b6020831061143f57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611402565b51815160209384036101000a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01801990921691161790526040519190930194509192505080830381855afa15801561149c573d6000803e3d6000fd5b5050506040513d60208110156114b157600080fd5b50519250505090565b60408051600880825281830190925260609160208201818036833701905050905060c082901b8060071a60f81b826000815181106114f457fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060061a60f81b8260018151811061153757fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060051a60f81b8260028151811061157a57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060041a60f81b826003815181106115bd57fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060031a60f81b8260048151811061160057fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060021a60f81b8260058151811061164357fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060011a60f81b8260068151811061168657fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053508060001a60f81b826007815181106116c957fe5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535050919050565b6000808585111561170d578182fd5b83861115611719578182fd5b505082019391909203915056fe4465706f736974436f6e74726163743a206d65726b6c6520747265652066756c6c4465706f736974436f6e74726163743a207265636f6e7374727563746564204465706f7369744461746120646f6573206e6f74206d6174636820737570706c696564206465706f7369745f646174615f726f6f744465706f736974436f6e74726163743a20696e76616c6964207769746864726177616c5f63726564656e7469616c73206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c7565206e6f74206d756c7469706c65206f6620677765694465706f736974436f6e74726163743a20696e76616c6964207075626b6579206c656e6774684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f20686967684465706f736974436f6e74726163743a206465706f7369742076616c756520746f6f206c6f774465706f736974436f6e74726163743a20696e76616c6964207369676e6174757265206c656e677468a2646970667358221220dceca8706b29e917dacf25fceef95acac8d90d765ac926663ce4096195952b6164736f6c634300060b0033", + "storage": { + "0x22": "0xf5a5fd42d16a20302798ef6ed309979b43003d2320d9f0e8ea9831a92759fb4b", + "0x23": "0xdb56114e00fdd4c1f85c892bf35ac9a89289aaecb1ebd0a96cde606a748b5d71", + "0x24": "0xc78009fdf07fc56a11f122370658a353aaa542ed63e44c4bc15ff4cd105ab33c", + "0x25": "0x536d98837f2dd165a55d5eeae91485954472d56f246df256bf3cae19352a123c", + "0x26": "0x9efde052aa15429fae05bad4d0b1d7c64da64d03d7a1854a588c2cb8430c0d30", + "0x27": "0xd88ddfeed400a8755596b21942c1497e114c302e6118290f91e6772976041fa1", + "0x28": "0x87eb0ddba57e35f6d286673802a4af5975e22506c7cf4c64bb6be5ee11527f2c", + "0x29": "0x26846476fd5fc54a5d43385167c95144f2643f533cc85bb9d16b782f8d7db193", + "0x2a": "0x506d86582d252405b840018792cad2bf1259f1ef5aa5f887e13cb2f0094f51e1", + "0x2b": "0xffff0ad7e659772f9534c195c815efc4014ef1e1daed4404c06385d11192e92b", + "0x2c": "0x6cf04127db05441cd833107a52be852868890e4317e6a02ab47683aa75964220", + "0x2d": "0xb7d05f875f140027ef5118a2247bbb84ce8f2f0f1123623085daf7960c329f5f", + "0x2e": "0xdf6af5f5bbdb6be9ef8aa618e4bf8073960867171e29676f8b284dea6a08a85e", + "0x2f": "0xb58d900f5e182e3c50ef74969ea16c7726c549757cc23523c369587da7293784", + "0x30": "0xd49a7502ffcfb0340b1d7885688500ca308161a7f96b62df9d083b71fcc8f2bb", + "0x31": "0x8fe6b1689256c0d385f42f5bbe2027a22c1996e110ba97c171d3e5948de92beb", + "0x32": "0x8d0d63c39ebade8509e0ae3c9c3876fb5fa112be18f905ecacfecb92057603ab", + "0x33": "0x95eec8b2e541cad4e91de38385f2e046619f54496c2382cb6cacd5b98c26f5a4", + "0x34": "0xf893e908917775b62bff23294dbbe3a1cd8e6cc1c35b4801887b646a6f81f17f", + "0x35": "0xcddba7b592e3133393c16194fac7431abf2f5485ed711db282183c819e08ebaa", + "0x36": "0x8a8d7fe3af8caa085a7639a832001457dfb9128a8061142ad0335629ff23ff9c", + "0x37": "0xfeb3c337d7a51a6fbf00b9e34c52e1c9195c969bd4e7a0bfd51d5c5bed9c1167", + "0x38": "0xe71f0aa83cc32edfbefa9f4d3e0174ca85182eec9f3a09f6a6c0df6377a510d7", + "0x39": "0x31206fa80a50bb6abe29085058f16212212a60eec8f049fecb92d8c8e0a84bc0", + "0x3a": "0x21352bfecbeddde993839f614c3dac0a3ee37543f9b412b16199dc158e23b544", + "0x3b": "0x619e312724bb6d7c3153ed9de791d764a366b389af13c58bf8a8d90481a46765", + "0x3c": "0x7cdd2986268250628d0c10e385c58c6191e6fbe05191bcc04f133f2cea72c1c4", + "0x3d": "0x848930bd7ba8cac54661072113fb278869e07bb8587f91392933374d017bcbe1", + "0x3e": "0x8869ff2c22b28cc10510d9853292803328be4fb0e80495e8bb8d271f5b889636", + "0x3f": "0xb5fe28e79f1b850f8658246ce9b6a1e7b49fc06db7143e8fe0b4f2b0c5523a5c", + "0x40": "0x985e929f70af28d0bdd1a90a808f977f597c7c778c489e98d3bd8910d31ac0f7" + } + }, + "0x000f3df6d732807ef1319fb7b8bb8522d0beac02": { + "nonce": "0x01", + "balance": "0x00", + "code": "0x3373fffffffffffffffffffffffffffffffffffffffe14604d57602036146024575f5ffd5b5f35801560495762001fff810690815414603c575f5ffd5b62001fff01545f5260205ff35b5f5ffd5b62001fff42064281555f359062001fff015500", + "storage": { + "0x03e8": "0x03e8" + } + }, + "0x00a3ca265ebcb825b45f985a16cefb49958ce017": { + "nonce": "0x01", + "balance": "0x00", + "code": "0x3373fffffffffffffffffffffffffffffffffffffffe146090573615156028575f545f5260205ff35b366038141561012e5760115f54600182026001905f5b5f82111560595781019083028483029004916001019190603e565b90939004341061012e57600154600101600155600354806003026004013381556001015f3581556001016020359055600101600355005b6003546002548082038060101160a4575060105b5f5b81811460dd5780604c02838201600302600401805490600101805490600101549160601b83528260140152906034015260010160a6565b910180921460ed579060025560f8565b90505f6002555f6003555b5f548061049d141561010757505f5b60015460028282011161011c5750505f610122565b01600290035b5f555f600155604c025ff35b5f5ffd", + "storage": {} + }, + "0x0aae40965e6800cd9b1f4b05ff21581047e3f91e": { + "nonce": "0x01", + "balance": "0x00", + "code": "0x3373fffffffffffffffffffffffffffffffffffffffe1460575767ffffffffffffffff5f3511605357600143035f3511604b575f35612000014311604b57611fff5f3516545f5260205ff35b5f5f5260205ff35b5f5ffd5b5f35611fff60014303165500", + "storage": { + "0x00": "0xc9397e8a1b99cbb2b885852fde56de8fa686091a4f4430163f5237d7aaf33a14" + } + }, + "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba": { + "nonce": "0x00", + "balance": "0x01f92c", + "code": "0x", + "storage": {} + }, + "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b": { + "nonce": "0x01", + "balance": "0x3635c9adc5de996c18", + "code": "0x", + "storage": {} + } + }, + "genesisRLP": "0xf90262f9025ba00000000000000000000000000000000000000000000000000000000000000000a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347940000000000000000000000000000000000000000a034ccf8774a5b8833da9451a3f7f8a0af0147956c058f0831dab07c348d7ac0d9a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000808088016345785d8a0000808000a0000000000000000000000000000000000000000000000000000000000000000088000000000000000007a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421c0c0c0c0", + "blocks": [ + { + "blockHeader": { + "parentHash": "0xc9397e8a1b99cbb2b885852fde56de8fa686091a4f4430163f5237d7aaf33a14", + "uncleHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "coinbase": "0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba", + "stateRoot": "0x1a4885d1f64bac16e5ab17fb13e23fb5d1a0ec2ca4519c81714683f69c8d9a84", + "transactionsTrie": "0xec9d10cff79619f2df45db8c66526ef3fbd32d283fdd2dcc9b55c0efe643d8c3", + "receiptTrie": "0x9593f56abf23bcbb26d27b0c6e46a56415d9103ed6b4d8ac7b4182f9f250cafa", + "bloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "difficulty": "0x00", + "number": "0x01", + "gasLimit": "0x016345785d8a0000", + "gasUsed": "0xa864", + "timestamp": "0x03e8", + "extraData": "0x00", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x0000000000000000", + "baseFeePerGas": "0x07", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "blobGasUsed": "0x00", + "excessBlobGas": "0x00", + "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", + "requestsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "hash": "0x879cf54bf493b6585db592b1b24ec30a8a7fbe3b9146d3fb20ca36200f2aca87" + }, + "transactions": [ + { + "type": "0x00", + "chainId": "0x01", + "nonce": "0x00", + "gasPrice": "0x0a", + "gasLimit": "0x989680", + "to": "0x0000000000000000000000000000000000001000", + "value": "0x00", + "data": "0x", + "v": "0x26", + "r": "0xe5d462429669f661291a8dc4c49a092cfd4922b6f3f31c9189a2f4adf5ecd730", + "s": "0x01494afaf472fbb80bcb107ffeb918a2b9115f454027840615d6d20d63c69ac0", + "sender": "0xa94f5374fce5edbc8e2a8697c15331677e6ebf0b" + } + ], + "uncleHeaders": [], + "withdrawals": [], + "depositRequests": [], + "withdrawalRequests": [], + "rlp": "0xf902c9f9025fa0c9397e8a1b99cbb2b885852fde56de8fa686091a4f4430163f5237d7aaf33a14a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347942adc25665018aa1fe0e6bc666dac8fc2697ff9baa01a4885d1f64bac16e5ab17fb13e23fb5d1a0ec2ca4519c81714683f69c8d9a84a0ec9d10cff79619f2df45db8c66526ef3fbd32d283fdd2dcc9b55c0efe643d8c3a09593f56abf23bcbb26d27b0c6e46a56415d9103ed6b4d8ac7b4182f9f250cafab9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800188016345785d8a000082a8648203e800a0000000000000000000000000000000000000000000000000000000000000000088000000000000000007a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421f862f860800a83989680940000000000000000000000000000000000001000808026a0e5d462429669f661291a8dc4c49a092cfd4922b6f3f31c9189a2f4adf5ecd730a001494afaf472fbb80bcb107ffeb918a2b9115f454027840615d6d20d63c69ac0c0c0c0", + "blocknumber": "1" + } + ], + "lastblockhash": "0x879cf54bf493b6585db592b1b24ec30a8a7fbe3b9146d3fb20ca36200f2aca87", + "sealEngine": "NoProof", + "_info": { + "hash": "0xbfd1223f9b5b8dbf202178f7c1f18dc089cb24e54c9cb7fc9831907547e937c4", + "comment": "`execution-spec-tests` generated test", + "filling-transition-tool": "Hyperledger Besu evm 24.7-develop-8ca7129", + "description": "Test function documentation:\nEOF1V4200_0002 (Valid) EOF code containing RJUMP (Zero)", + "url": "https://github.com/ethereum/execution-spec-tests/blob/891a6111370c89d4ce89bf91589c6d5ff6785158/tests/prague/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py#L63", + "reference-spec": "https://github.com/ethereum/EIPs/blob/master/EIPS/eip-4200.md", + "reference-spec-version": "17d4a8d12d2b5e0f2985c866376c16c8c6df7cba" + } + } + }, + "stdout": "Considering tests/prague/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_zero[fork_PragueEIP7692-blockchain_test]\nBlock 1 (0x879cf54bf493b6585db592b1b24ec30a8a7fbe3b9146d3fb20ca36200f2aca87) Imported\nChain import successful - tests/prague/eip7692_eof_v1/eip4200_relative_jumps/test_rjump.py::test_rjump_zero[fork_PragueEIP7692-blockchain_test]\n" +} diff --git a/ethereum/evmtool/src/test/resources/org/hyperledger/besu/evmtool/t8n/prague-withdrawal.json b/ethereum/evmtool/src/test/resources/org/hyperledger/besu/evmtool/t8n/prague-withdrawal.json index 66dcf3e85e31..cc8958b07c5f 100644 --- a/ethereum/evmtool/src/test/resources/org/hyperledger/besu/evmtool/t8n/prague-withdrawal.json +++ b/ethereum/evmtool/src/test/resources/org/hyperledger/besu/evmtool/t8n/prague-withdrawal.json @@ -178,6 +178,7 @@ "0x00a3ca265ebcb825b45f985a16cefb49958ce017": { "code": "0x3373fffffffffffffffffffffffffffffffffffffffe146090573615156028575f545f5260205ff35b366038141561012e5760115f54600182026001905f5b5f82111560595781019083028483029004916001019190603e565b90939004341061012e57600154600101600155600354806003026004013381556001015f3581556001016020359055600101600355005b6003546002548082038060101160a4575060105b5f5b81811460dd5780604c02838201600302600401805490600101805490600101549160601b83528260140152906034015260010160a6565b910180921460ed579060025560f8565b90505f6002555f6003555b5f548061049d141561010757505f5b60015460028282011161011c5750505f610122565b01600290035b5f555f600155604c025ff35b5f5ffd", "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000000000000000000000000000000000000000000e", "0x0000000000000000000000000000000000000000000000000000000000000004": "0x0000000000000000000000000000000000000000000000000000000000000200", "0x0000000000000000000000000000000000000000000000000000000000000006": "0x00000000000000000000000000000001fffffffffffffffe0000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000007": "0x0000000000000000000000000000000000000000000000000000000000000200", @@ -229,31 +230,6 @@ }, "body": "0xf903e5f903e28007830f424094000000000000000000000000000000000000020080b90380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001fffffffffffffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003fffffffffffffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005fffffffffffffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007fffffffffffffffe0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009fffffffffffffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bfffffffffffffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000dfffffffffffffffe00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffe000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000026a0963cb6620fe5828cbc93bb7139d3f4501067d76275dff648bf48c3c100ca8dd4a04ac396104a5be4643406718f59a6e74d62a32777f5f6135e55e805e87612013c", "result": { - "stateRoot": "0xdba3aee0733886dac565d2a654d8fac1953fd913261f44b3aa31f153e159e98a", - "txRoot": "0x8521df63211790726b6f1a437bb0fd4b27c00e13e7678d324c4cfddb8d834ad2", - "receiptsRoot": "0x4bd8bd5580caf4ed45f873794ad7ff9d6fd2363ae529269b17b891b68d349d75", - "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "receipts": [ - { - "root": "0x", - "status": "0x1", - "cumulativeGasUsed": "0xe52ba", - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "logs": null, - "transactionHash": "0x04a2d3f252dcc98edb684f7f15b572aaf980d0c2eea4c620a9f1ff1d275b2207", - "contractAddress": "0x0000000000000000000000000000000000000000", - "gasUsed": "0xe52ba", - "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "transactionIndex": "0x0" - } - ], - "currentDifficulty": null, - "gasUsed": "0xe52ba", - "currentBaseFee": "0x7", - "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", - "currentExcessBlobGas": "0x0", - "blobGasUsed": "0x0", "requestsRoot": "0x415d33e444f917658fd3bd6d3d8d88a1f501f9b83ace92ddacac823252c9fa47", "depositRequests": [], "withdrawalRequests": [ @@ -337,7 +313,32 @@ "validatorPubkey": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010", "amount": "0x0000000000000000" } - ] + ], + "stateRoot": "0xf63d7552dc407993393315e99272781d04eedfcf369a1acd3e386d1e6710229d", + "txRoot": "0x8521df63211790726b6f1a437bb0fd4b27c00e13e7678d324c4cfddb8d834ad2", + "receiptsRoot": "0x4bd8bd5580caf4ed45f873794ad7ff9d6fd2363ae529269b17b891b68d349d75", + "logsHash": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "receipts": [ + { + "root": "0x", + "status": "0x1", + "cumulativeGasUsed": "0xe52ba", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "logs": null, + "transactionHash": "0x04a2d3f252dcc98edb684f7f15b572aaf980d0c2eea4c620a9f1ff1d275b2207", + "contractAddress": "0x0000000000000000000000000000000000000000", + "gasUsed": "0xe52ba", + "blockHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "transactionIndex": "0x0" + } + ], + "currentDifficulty": null, + "gasUsed": "0xe52ba", + "currentBaseFee": "0x7", + "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421", + "currentExcessBlobGas": "0x0", + "blobGasUsed": "0x0" } } } \ No newline at end of file diff --git a/ethereum/p2p/src/test/java/org/hyperledger/besu/ethereum/p2p/discovery/internal/PeerRequirementCombineTest.java b/ethereum/p2p/src/test/java/org/hyperledger/besu/ethereum/p2p/discovery/internal/PeerRequirementCombineTest.java index 5c7a140dc641..7ad7f7c415ee 100644 --- a/ethereum/p2p/src/test/java/org/hyperledger/besu/ethereum/p2p/discovery/internal/PeerRequirementCombineTest.java +++ b/ethereum/p2p/src/test/java/org/hyperledger/besu/ethereum/p2p/discovery/internal/PeerRequirementCombineTest.java @@ -23,6 +23,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.stream.Stream; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -76,4 +77,11 @@ public void combine_withOn() { PeerRequirement combined = PeerRequirement.combine(Collections.emptyList()); assertThat(combined.hasSufficientPeers()).isTrue(); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/p2p/src/test/java/org/hyperledger/besu/ethereum/p2p/peers/EnodeURLImplTest.java b/ethereum/p2p/src/test/java/org/hyperledger/besu/ethereum/p2p/peers/EnodeURLImplTest.java index b7cc2a063276..cf8fdd6cf00e 100644 --- a/ethereum/p2p/src/test/java/org/hyperledger/besu/ethereum/p2p/peers/EnodeURLImplTest.java +++ b/ethereum/p2p/src/test/java/org/hyperledger/besu/ethereum/p2p/peers/EnodeURLImplTest.java @@ -32,6 +32,8 @@ import org.apache.tuweni.bytes.Bytes; import org.assertj.core.api.ThrowableAssert; import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.condition.DisabledOnOs; +import org.junit.jupiter.api.condition.OS; import org.mockito.Mockito; public class EnodeURLImplTest { @@ -494,6 +496,9 @@ public void toURI_WithHostnameShouldWorkWhenDnsEnabled() { } @Test + @DisabledOnOs( + value = OS.MAC, + disabledReason = "canonical lookup may not match dns lookup for local machine") public void toURI_WithHostnameShouldWorkWhenDnsEnabledAndUpdateEnabled() throws UnknownHostException { final String enodeURLString = diff --git a/ethereum/p2p/src/test/java/org/hyperledger/besu/ethereum/p2p/rlpx/connections/netty/TLSContextFactoryTest.java b/ethereum/p2p/src/test/java/org/hyperledger/besu/ethereum/p2p/rlpx/connections/netty/TLSContextFactoryTest.java index 45d228cb40fd..d7763892c5d4 100644 --- a/ethereum/p2p/src/test/java/org/hyperledger/besu/ethereum/p2p/rlpx/connections/netty/TLSContextFactoryTest.java +++ b/ethereum/p2p/src/test/java/org/hyperledger/besu/ethereum/p2p/rlpx/connections/netty/TLSContextFactoryTest.java @@ -48,6 +48,7 @@ import io.netty.handler.ssl.SslHandler; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.condition.DisabledOnOs; import org.junit.jupiter.api.condition.OS; import org.junit.jupiter.params.ParameterizedTest; @@ -493,4 +494,11 @@ Optional getCause() { return messageHandler != null ? messageHandler.getCause() : Optional.empty(); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/ethereum/referencetests/build.gradle b/ethereum/referencetests/build.gradle index c023dcd699ed..11db6b8eeee5 100644 --- a/ethereum/referencetests/build.gradle +++ b/ethereum/referencetests/build.gradle @@ -34,6 +34,7 @@ def blockchainReferenceTests = tasks.register("blockchainReferenceTests") { "BlockchainTests", "$generatedTestsPath/org/hyperledger/besu/ethereum/vm/blockchain", "BlockchainReferenceTest", + "org.hyperledger.besu.ethereum.vm.blockchain", ("BlockchainTests/InvalidBlocks/bcExpectSection") // exclude test for test filling tool ) } @@ -50,6 +51,7 @@ def eipBlockchainReferenceTests = tasks.register("eipBlockchainReferenceTests") "EIPTests${File.separatorChar}BlockchainTests", "$generatedTestsPath/org/hyperledger/besu/ethereum/vm/eip", "EIPBlockchainReferenceTest", + "org.hyperledger.besu.ethereum.vm.eip", ) } @@ -65,6 +67,7 @@ def eipStateReferenceTests = tasks.register("eipStateReferenceTests") { "EIPTests${File.separatorChar}StateTests", "$generatedTestsPath/org/hyperledger/besu/ethereum/vm/eip", "EIPStateReferenceTest", + "org.hyperledger.besu.ethereum.vm.eip", ) } @@ -83,19 +86,21 @@ def executionSpecTests = tasks.register("executionSpecTests") { // generate blockchain_tests: generateTestFiles( fileTree(referenceTestsPath + "/fixtures/blockchain_tests"), - file("src/reference-test/templates/ExecutionSpecTest.java.template"), + file("src/reference-test/templates/BlockchainReferenceTest.java.template"), "fixtures", "$generatedTestsPath/org/hyperledger/besu/ethereum/vm/executionspec", - "ExecutionSpecBlockchainTest" + "ExecutionSpecBlockchainTest", + "org.hyperledger.besu.ethereum.vm.executionspec", ) // generate state_tests: generateTestFiles( fileTree(referenceTestsPath + "/fixtures/state_tests"), - file("src/reference-test/templates/ExecutionSpecStateTest.java.template"), + file("src/reference-test/templates/GeneralStateReferenceTest.java.template"), "fixtures", "$generatedTestsPath/org/hyperledger/besu/ethereum/vm/executionspec", - "ExecutionSpecStateTest" + "ExecutionSpecStateTest", + "org.hyperledger.besu.ethereum.vm.executionspec", ) } @@ -110,7 +115,8 @@ def generalstateReferenceTests = tasks.register("generalstateReferenceTests") { file("src/reference-test/templates/GeneralStateReferenceTest.java.template"), "GeneralStateTests", "$generatedTestsPath/org/hyperledger/besu/ethereum/vm/generalstate", - "GeneralStateReferenceTest" + "GeneralStateReferenceTest", + "org.hyperledger.besu.ethereum.vm.generalstate", ) } @@ -125,7 +131,8 @@ def generalstateRegressionReferenceTests = tasks.register("generalstateRegressio file("src/reference-test/templates/GeneralStateReferenceTest.java.template"), "regressions", "$generatedTestsPath/org/hyperledger/besu/ethereum/vm/generalstate", - "GeneralStateRegressionReferenceTest" + "GeneralStateRegressionReferenceTest", + "org.hyperledger.besu.ethereum.vm.generalstate" ) } @@ -140,7 +147,8 @@ def eofReferenceTests = tasks.register("eofReferenceTests") { file("src/reference-test/templates/EOFReferenceTest.java.template"), "EOFTests", "$generatedTestsPath/org/hyperledger/besu/ethereum/vm/eof", - "EOFReferenceTest" + "EOFReferenceTest", + "org.hyperledger.besu.ethereum.vm.eof" ) } @@ -259,7 +267,14 @@ following commands: } processResources.dependsOn('validateReferenceTestSubmodule') -def generateTestFiles(FileTree jsonPath, File templateFile, String pathstrip, String destination, String namePrefix, String ... excludedPath) { +def generateTestFiles( + FileTree jsonPath, + File templateFile, + String pathstrip, + String destination, + String namePrefix, + String packageString, + String ... excludedPath) { mkdir(destination) def referenceTestTemplate = templateFile.text @@ -281,6 +296,7 @@ def generateTestFiles(FileTree jsonPath, File templateFile, String pathstrip, St def testFileContents = referenceTestTemplate .replaceAll("%%TESTS_FILE%%", allPaths) .replaceAll("%%TESTS_NAME%%", namePrefix + "_" + idx) + .replaceAll("%%PACKAGE_NAME%%", packageString) testFile.newWriter().withWriter { w -> w << testFileContents } } } diff --git a/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/EOFTestCaseSpec.java b/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/EOFTestCaseSpec.java index e67ec2091f0c..48fae5277de0 100644 --- a/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/EOFTestCaseSpec.java +++ b/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/EOFTestCaseSpec.java @@ -25,7 +25,8 @@ public class EOFTestCaseSpec { public record TestVector( @JsonProperty("code") String code, - @JsonProperty("results") NavigableMap results) {} + @JsonProperty("results") NavigableMap results, + @JsonProperty("containerKind") String containerKind) {} public record TestResult( @JsonProperty("exception") String exception, @JsonProperty("result") boolean result) { diff --git a/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/GeneralStateTestCaseSpec.java b/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/GeneralStateTestCaseSpec.java index 73735fdb0e02..affc6e46010c 100644 --- a/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/GeneralStateTestCaseSpec.java +++ b/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/GeneralStateTestCaseSpec.java @@ -56,10 +56,12 @@ private Map> generate( final ReferenceTestWorldState initialWorldState, final Map> postSections, final StateTestVersionedTransaction versionedTransaction) { - + if (initialWorldState == null) { + return Map.of(); + } initialWorldState.persist(null); final Map> res = - new LinkedHashMap<>(postSections.size()); + LinkedHashMap.newLinkedHashMap(postSections.size()); for (final Map.Entry> entry : postSections.entrySet()) { final String eip = entry.getKey(); final List post = entry.getValue(); diff --git a/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/ReferenceTestProtocolSchedules.java b/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/ReferenceTestProtocolSchedules.java index 4d62c314ae39..8ac419f7a683 100644 --- a/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/ReferenceTestProtocolSchedules.java +++ b/ethereum/referencetests/src/main/java/org/hyperledger/besu/ethereum/referencetests/ReferenceTestProtocolSchedules.java @@ -91,6 +91,11 @@ public static ReferenceTestProtocolSchedules create(final StubGenesisConfigOptio "CancunToPragueAtTime15k", createSchedule(genesisStub.clone().cancunTime(0).pragueTime(15000))); builder.put("Prague", createSchedule(genesisStub.clone().pragueEOFTime(0))); + builder.put("Osaka", createSchedule(genesisStub.clone().futureEipsTime(0))); + builder.put("Amsterdam", createSchedule(genesisStub.clone().futureEipsTime(0))); + builder.put("Bogota", createSchedule(genesisStub.clone().futureEipsTime(0))); + builder.put("Polis", createSchedule(genesisStub.clone().futureEipsTime(0))); + builder.put("Bangkok", createSchedule(genesisStub.clone().futureEipsTime(0))); builder.put("Future_EIPs", createSchedule(genesisStub.clone().futureEipsTime(0))); builder.put("Experimental_EIPs", createSchedule(genesisStub.clone().experimentalEipsTime(0))); return new ReferenceTestProtocolSchedules(builder.build()); diff --git a/ethereum/referencetests/src/reference-test/java/org/hyperledger/besu/ethereum/eof/EOFReferenceTestTools.java b/ethereum/referencetests/src/reference-test/java/org/hyperledger/besu/ethereum/eof/EOFReferenceTestTools.java index 58f8c025297a..a15bcb241892 100644 --- a/ethereum/referencetests/src/reference-test/java/org/hyperledger/besu/ethereum/eof/EOFReferenceTestTools.java +++ b/ethereum/referencetests/src/reference-test/java/org/hyperledger/besu/ethereum/eof/EOFReferenceTestTools.java @@ -21,13 +21,19 @@ import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Map.Entry; + import org.apache.tuweni.bytes.Bytes; + import org.hyperledger.besu.ethereum.referencetests.EOFTestCaseSpec; +import org.hyperledger.besu.ethereum.referencetests.EOFTestCaseSpec.TestResult; import org.hyperledger.besu.ethereum.referencetests.ReferenceTestProtocolSchedules; import org.hyperledger.besu.evm.Code; import org.hyperledger.besu.evm.EVM; import org.hyperledger.besu.evm.code.CodeInvalid; +import org.hyperledger.besu.evm.code.CodeV1; import org.hyperledger.besu.evm.code.EOFLayout; +import org.hyperledger.besu.evm.code.EOFLayout.EOFContainerMode; import org.hyperledger.besu.testutil.JsonTestParameters; public class EOFReferenceTestTools { @@ -43,13 +49,18 @@ public class EOFReferenceTestTools { JsonTestParameters.create(EOFTestCaseSpec.class, EOFTestCaseSpec.TestResult.class) .generator( (testName, fullPath, eofSpec, collector) -> { + if (eofSpec.getVector() == null) { + return; + } final Path path = Path.of(fullPath).getParent().getFileName(); final String prefix = path + "/" + testName + "-"; for (final Map.Entry entry : eofSpec.getVector().entrySet()) { final String name = entry.getKey(); final Bytes code = Bytes.fromHexString(entry.getValue().code()); - for (final var result : entry.getValue().results().entrySet()) { + final String containerKind = entry.getValue().containerKind(); + for (final Entry result : + entry.getValue().results().entrySet()) { final String eip = result.getKey(); final boolean runTest = EIPS_TO_RUN.contains(eip); collector.add( @@ -57,6 +68,7 @@ public class EOFReferenceTestTools { fullPath, eip, code, + containerKind, result.getValue(), runTest); } @@ -72,7 +84,7 @@ public class EOFReferenceTestTools { params.ignore("EOF1_undefined_opcodes_186"); // embedded containers rules changed - params.ignore("efValidation/EOF1_embedded_container-Prague\\[EOF1_embedded_container_\\d+\\]"); + params.ignore("efValidation/EOF1_embedded_container-Prague\\[EOF1_embedded_container_\\d+\\]"); // truncated data is only allowed in embedded containers params.ignore("ori/validInvalid-Prague\\[validInvalid_48\\]"); @@ -101,7 +113,10 @@ public static Collection generateTestParametersForConfig(final String[ @SuppressWarnings("java:S5960") // This is not production code, this is testing code. public static void executeTest( - final String fork, final Bytes code, final EOFTestCaseSpec.TestResult expected) { + final String fork, + final Bytes code, + final String containerKind, + final EOFTestCaseSpec.TestResult expected) { EVM evm = ReferenceTestProtocolSchedules.create().geSpecByName(fork).getEvm(); assertThat(evm).isNotNull(); @@ -112,23 +127,40 @@ public static void executeTest( EOFLayout layout = EOFLayout.parseEOF(code); if (layout.isValid()) { - Code parsedCode = evm.getCodeUncached(code); - assertThat(parsedCode.isValid()) - .withFailMessage( - () -> - EOFLayout.parseEOF(code).prettyPrint() - + "\nExpected exception :" - + expected.exception() - + " actual exception :" - + (parsedCode.isValid() - ? null - : ((CodeInvalid) parsedCode).getInvalidReason())) - .isEqualTo(expected.result()); - - if (expected.result()) { - assertThat(code) - .withFailMessage("Container round trip failed") - .isEqualTo(layout.writeContainer(null)); + Code parsedCode; + if ("INITCODE".equals(containerKind)) { + parsedCode = evm.getCodeForCreation(code); + } else { + parsedCode = evm.getCodeUncached(code); + } + if ("EOF_IncompatibleContainerKind".equals(expected.exception()) && parsedCode.isValid()) { + EOFContainerMode expectedMode = + EOFContainerMode.valueOf(containerKind == null ? "RUNTIME" : containerKind); + EOFContainerMode containerMode = + ((CodeV1) parsedCode).getEofLayout().containerMode().get(); + EOFContainerMode actualMode = + containerMode == null ? EOFContainerMode.RUNTIME : containerMode; + assertThat(actualMode) + .withFailMessage("Code did not parse to valid containerKind of " + expectedMode) + .isNotEqualTo(expectedMode); + } else { + assertThat(parsedCode.isValid()) + .withFailMessage( + () -> + EOFLayout.parseEOF(code).prettyPrint() + + "\nExpected exception :" + + expected.exception() + + " actual exception :" + + (parsedCode.isValid() + ? null + : ((CodeInvalid) parsedCode).getInvalidReason())) + .isEqualTo(expected.result()); + + if (expected.result()) { + assertThat(code) + .withFailMessage("Container round trip failed") + .isEqualTo(layout.writeContainer(null)); + } } } else { assertThat(layout.isValid()) diff --git a/ethereum/referencetests/src/reference-test/templates/BlockchainReferenceTest.java.template b/ethereum/referencetests/src/reference-test/templates/BlockchainReferenceTest.java.template index 387fb0cc1893..e7789905b35d 100644 --- a/ethereum/referencetests/src/reference-test/templates/BlockchainReferenceTest.java.template +++ b/ethereum/referencetests/src/reference-test/templates/BlockchainReferenceTest.java.template @@ -1,4 +1,4 @@ -package org.hyperledger.besu.ethereum.vm.blockchain; +package %%PACKAGE_NAME%%; import static org.hyperledger.besu.ethereum.vm.BlockchainReferenceTestTools.executeTest; import static org.hyperledger.besu.ethereum.vm.BlockchainReferenceTestTools.generateTestParametersForConfig; diff --git a/ethereum/referencetests/src/reference-test/templates/EOFReferenceTest.java.template b/ethereum/referencetests/src/reference-test/templates/EOFReferenceTest.java.template index 5f5cafd6760a..d9e52403d782 100644 --- a/ethereum/referencetests/src/reference-test/templates/EOFReferenceTest.java.template +++ b/ethereum/referencetests/src/reference-test/templates/EOFReferenceTest.java.template @@ -34,9 +34,10 @@ public class %%TESTS_NAME%% { final String name, final String fork, final Bytes code, + final String containerKind, final EOFTestCaseSpec.TestResult results, final boolean runTest) { assumeTrue(runTest, "Test " + name + " was ignored"); - executeTest(fork, code, results); + executeTest(fork, code, containerKind, results); } } diff --git a/ethereum/referencetests/src/reference-test/templates/ExecutionSpecStateTest.java.template b/ethereum/referencetests/src/reference-test/templates/ExecutionSpecStateTest.java.template deleted file mode 100644 index 76da5d64f9c1..000000000000 --- a/ethereum/referencetests/src/reference-test/templates/ExecutionSpecStateTest.java.template +++ /dev/null @@ -1,37 +0,0 @@ -package org.hyperledger.besu.ethereum.vm.executionspec; - -import static org.hyperledger.besu.ethereum.vm.GeneralStateReferenceTestTools.executeTest; -import static org.hyperledger.besu.ethereum.vm.GeneralStateReferenceTestTools.generateTestParametersForConfig; -import static org.junit.jupiter.api.Assumptions.assumeTrue; - -import org.hyperledger.besu.ethereum.referencetests.GeneralStateTestCaseEipSpec; - -import java.util.stream.Stream; - -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - -import static org.junit.jupiter.api.Assumptions.assumeTrue; - -/** The general state test operation testing framework entry point. */ -public class %%TESTS_NAME%% { - - private static final String[] TEST_CONFIG_FILE_DIR_PATH = new String[] {%%TESTS_FILE%%}; - - public static Stream getTestParametersForConfig() { - return generateTestParametersForConfig(TEST_CONFIG_FILE_DIR_PATH).stream().map(params -> - Arguments.of(params[0], params[1], params[2]) - ); - } - - @ParameterizedTest(name = "Name: {0}") - @MethodSource("getTestParametersForConfig") - public void execution( - final String name, - final GeneralStateTestCaseEipSpec spec, - final boolean runTest) { - assumeTrue(runTest, "Test " + name + " was ignored"); - executeTest(spec); - } -} diff --git a/ethereum/referencetests/src/reference-test/templates/ExecutionSpecTest.java.template b/ethereum/referencetests/src/reference-test/templates/ExecutionSpecTest.java.template deleted file mode 100644 index d56115f123c3..000000000000 --- a/ethereum/referencetests/src/reference-test/templates/ExecutionSpecTest.java.template +++ /dev/null @@ -1,36 +0,0 @@ -package org.hyperledger.besu.ethereum.vm.executionspec; - -import static org.hyperledger.besu.ethereum.vm.BlockchainReferenceTestTools.executeTest; -import static org.hyperledger.besu.ethereum.vm.BlockchainReferenceTestTools.generateTestParametersForConfig; - -import org.hyperledger.besu.ethereum.referencetests.BlockchainReferenceTestCaseSpec; - -import java.util.stream.Stream; - -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - -import static org.junit.jupiter.api.Assumptions.assumeTrue; - -/** The blockchain test operation testing framework entry point. */ -public class %%TESTS_NAME%% { - - private static final String[] TEST_CONFIG_FILE_DIR_PATH = new String[] {%%TESTS_FILE%%}; - - public static Stream getTestParametersForConfig() { - return generateTestParametersForConfig(TEST_CONFIG_FILE_DIR_PATH).stream().map(params -> - Arguments.of(params[0], params[1], params[2]) - ); - } - - @ParameterizedTest(name = "Name: {0}") - @MethodSource("getTestParametersForConfig") - public void execution( - final String name, - final BlockchainReferenceTestCaseSpec spec, - final boolean runTest) { - assumeTrue(runTest, "Test " + name + " was ignored"); - executeTest(spec); - } -} diff --git a/ethereum/referencetests/src/reference-test/templates/GeneralStateReferenceTest.java.template b/ethereum/referencetests/src/reference-test/templates/GeneralStateReferenceTest.java.template index 3d5976aff2be..139766a4b835 100644 --- a/ethereum/referencetests/src/reference-test/templates/GeneralStateReferenceTest.java.template +++ b/ethereum/referencetests/src/reference-test/templates/GeneralStateReferenceTest.java.template @@ -1,4 +1,4 @@ -package org.hyperledger.besu.ethereum.vm.generalstate; +package %%PACKAGE_NAME%%; import static org.hyperledger.besu.ethereum.vm.GeneralStateReferenceTestTools.executeTest; import static org.hyperledger.besu.ethereum.vm.GeneralStateReferenceTestTools.generateTestParametersForConfig; diff --git a/evm/build.gradle b/evm/build.gradle index efcab24b717b..b6f8ea36185e 100644 --- a/evm/build.gradle +++ b/evm/build.gradle @@ -44,6 +44,7 @@ dependencies { implementation 'io.tmio:tuweni-units' implementation 'org.hyperledger.besu:arithmetic' implementation 'org.hyperledger.besu:bls12-381' + implementation'org.hyperledger.besu:gnark' implementation 'tech.pegasys:jc-kzg-4844' compileOnly 'com.fasterxml.jackson.core:jackson-databind' diff --git a/evm/src/main/java/org/hyperledger/besu/evm/code/CodeFactory.java b/evm/src/main/java/org/hyperledger/besu/evm/code/CodeFactory.java index a0bba7037188..18561001205a 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/code/CodeFactory.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/code/CodeFactory.java @@ -15,6 +15,7 @@ package org.hyperledger.besu.evm.code; import org.hyperledger.besu.evm.Code; +import org.hyperledger.besu.evm.code.EOFLayout.EOFContainerMode; import javax.annotation.Nonnull; @@ -94,6 +95,9 @@ public Code createCode(final Bytes bytes, final boolean createTransaction) { } final EOFLayout layout = EOFLayout.parseEOF(bytes, !createTransaction); + if (createTransaction) { + layout.containerMode().set(EOFContainerMode.INITCODE); + } return createCode(layout); } else { return new CodeV0(bytes); diff --git a/evm/src/main/java/org/hyperledger/besu/evm/code/CodeV1.java b/evm/src/main/java/org/hyperledger/besu/evm/code/CodeV1.java index 50ffdd410612..a1517d1d7f4c 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/code/CodeV1.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/code/CodeV1.java @@ -111,7 +111,7 @@ public Optional getSubContainer(final int index, final Bytes auxData, fina codeToLoad = subcontainerLayout.container(); } - Code subContainerCode = evm.getCodeForCreation(codeToLoad); + Code subContainerCode = evm.getCodeUncached(codeToLoad); return subContainerCode.isValid() && subContainerCode.getEofVersion() > 0 ? Optional.of(subContainerCode) diff --git a/evm/src/main/java/org/hyperledger/besu/evm/code/EOFLayout.java b/evm/src/main/java/org/hyperledger/besu/evm/code/EOFLayout.java index 8b41a9792313..401308715afa 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/code/EOFLayout.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/code/EOFLayout.java @@ -57,9 +57,16 @@ public record EOFLayout( String invalidReason, AtomicReference containerMode) { - enum EOFContainerMode { + /** + * Enum tracking the useage mode of an EOF container. Detected either by opcode usage or + * determined by the source. + */ + public enum EOFContainerMode { + /** Usage mode is unknown */ UNKNOWN, + /** Usage mode is as init code */ INITCODE, + /** Usage mode is as deployed or runtime code */ RUNTIME } @@ -324,6 +331,9 @@ public static EOFLayout parseEOF(final Bytes container, final boolean strictSize Bytes subcontainer = container.slice(pos, subcontianerSize); pos += subcontianerSize; EOFLayout subLayout = EOFLayout.parseEOF(subcontainer, false); + if (subLayout.container.size() < subcontainer.size()) { + return invalidLayout(container, version, "excess data in subcontainer"); + } if (!subLayout.isValid()) { String invalidSubReason = subLayout.invalidReason; return invalidLayout( diff --git a/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractCreateOperation.java b/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractCreateOperation.java index 99892f4a8cfa..16ea218f9c69 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractCreateOperation.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractCreateOperation.java @@ -215,32 +215,32 @@ protected Bytes getInputData(final MessageFrame frame) { private void complete(final MessageFrame frame, final MessageFrame childFrame, final EVM evm) { frame.setState(MessageFrame.State.CODE_EXECUTING); - Code outputCode = - (childFrame.getCreatedCode() != null) - ? childFrame.getCreatedCode() - : evm.getCodeForCreation(childFrame.getOutputData()); + frame.incrementRemainingGas(childFrame.getRemainingGas()); + frame.addLogs(childFrame.getLogs()); + frame.addSelfDestructs(childFrame.getSelfDestructs()); + frame.addCreates(childFrame.getCreates()); frame.popStackItems(getStackItemsConsumed()); - if (outputCode.isValid()) { - frame.incrementRemainingGas(childFrame.getRemainingGas()); - frame.addLogs(childFrame.getLogs()); - frame.addSelfDestructs(childFrame.getSelfDestructs()); - frame.addCreates(childFrame.getCreates()); - - if (childFrame.getState() == MessageFrame.State.COMPLETED_SUCCESS) { + if (childFrame.getState() == MessageFrame.State.COMPLETED_SUCCESS) { + Code outputCode = + (childFrame.getCreatedCode() != null) + ? childFrame.getCreatedCode() + : evm.getCodeForCreation(childFrame.getOutputData()); + if (outputCode.isValid()) { Address createdAddress = childFrame.getContractAddress(); frame.pushStackItem(Words.fromAddress(createdAddress)); + frame.setReturnData(Bytes.EMPTY); onSuccess(frame, createdAddress); } else { + frame.getWorldUpdater().deleteAccount(childFrame.getRecipientAddress()); frame.setReturnData(childFrame.getOutputData()); frame.pushStackItem(LEGACY_FAILURE_STACK_ITEM); - onFailure(frame, childFrame.getExceptionalHaltReason()); + onInvalid(frame, (CodeInvalid) outputCode); } } else { - frame.getWorldUpdater().deleteAccount(childFrame.getRecipientAddress()); frame.setReturnData(childFrame.getOutputData()); frame.pushStackItem(LEGACY_FAILURE_STACK_ITEM); - onInvalid(frame, (CodeInvalid) outputCode); + onFailure(frame, childFrame.getExceptionalHaltReason()); } final int currentPC = frame.getPC(); diff --git a/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractExtCallOperation.java b/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractExtCallOperation.java index ad2f64bdb47a..e19b6cd8a29e 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractExtCallOperation.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/operation/AbstractExtCallOperation.java @@ -38,6 +38,8 @@ public abstract class AbstractExtCallOperation extends AbstractCallOperation { static final int STACK_TO = 0; + static final int STACK_INPUT_OFFSET = 1; + static final int STACK_INPUT_LENGTH = 2; /** EXT*CALL response indicating success */ public static final Bytes EOF1_SUCCESS_STACK_ITEM = Bytes.EMPTY; @@ -196,6 +198,10 @@ Bytes getCallResultStackItem(final MessageFrame childFrame) { return switch (childFrame.getState()) { case COMPLETED_SUCCESS -> EOF1_SUCCESS_STACK_ITEM; case EXCEPTIONAL_HALT -> EOF1_EXCEPTION_STACK_ITEM; + case COMPLETED_FAILED -> + childFrame.getExceptionalHaltReason().isPresent() + ? EOF1_FAILURE_STACK_ITEM + : EOF1_EXCEPTION_STACK_ITEM; default -> EOF1_FAILURE_STACK_ITEM; }; } diff --git a/evm/src/main/java/org/hyperledger/besu/evm/operation/DataCopyOperation.java b/evm/src/main/java/org/hyperledger/besu/evm/operation/DataCopyOperation.java index 7813358eac0d..a7f7b0147948 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/operation/DataCopyOperation.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/operation/DataCopyOperation.java @@ -18,6 +18,7 @@ import org.hyperledger.besu.evm.Code; import org.hyperledger.besu.evm.EVM; +import org.hyperledger.besu.evm.frame.ExceptionalHaltReason; import org.hyperledger.besu.evm.frame.MessageFrame; import org.hyperledger.besu.evm.gascalculator.GasCalculator; @@ -58,6 +59,9 @@ public OperationResult execute(final MessageFrame frame, final EVM evm) { final int sourceOffset = clampedToInt(frame.popStackItem()); final int length = clampedToInt(frame.popStackItem()); final long cost = cost(frame, memOffset, length); + if (cost > frame.getRemainingGas()) { + return new OperationResult(cost, ExceptionalHaltReason.INSUFFICIENT_GAS); + } final Bytes data = code.getData(sourceOffset, length); frame.writeMemory(memOffset, length, data); diff --git a/evm/src/main/java/org/hyperledger/besu/evm/operation/ExtCallOperation.java b/evm/src/main/java/org/hyperledger/besu/evm/operation/ExtCallOperation.java index bf986a572e52..5914f0e966a2 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/operation/ExtCallOperation.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/operation/ExtCallOperation.java @@ -24,9 +24,7 @@ /** The Call operation. */ public class ExtCallOperation extends AbstractExtCallOperation { - static final int STACK_VALUE = 1; - static final int STACK_INPUT_OFFSET = 2; - static final int STACK_INPUT_LENGTH = 3; + static final int STACK_VALUE = 3; /** * Instantiates a new Call operation. diff --git a/evm/src/main/java/org/hyperledger/besu/evm/operation/ExtDelegateCallOperation.java b/evm/src/main/java/org/hyperledger/besu/evm/operation/ExtDelegateCallOperation.java index bddb337c73bf..db851ee5a0b9 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/operation/ExtDelegateCallOperation.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/operation/ExtDelegateCallOperation.java @@ -24,9 +24,6 @@ /** The Delegate call operation. */ public class ExtDelegateCallOperation extends AbstractExtCallOperation { - static final int STACK_INPUT_OFFSET = 1; - static final int STACK_INPUT_LENGTH = 2; - /** * Instantiates a new Delegate call operation. * diff --git a/evm/src/main/java/org/hyperledger/besu/evm/operation/ExtStaticCallOperation.java b/evm/src/main/java/org/hyperledger/besu/evm/operation/ExtStaticCallOperation.java index 3a202f46e71f..ef3dc042d9cc 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/operation/ExtStaticCallOperation.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/operation/ExtStaticCallOperation.java @@ -24,9 +24,6 @@ /** The Static call operation. */ public class ExtStaticCallOperation extends AbstractExtCallOperation { - static final int STACK_INPUT_OFFSET = 1; - static final int STACK_INPUT_LENGTH = 2; - /** * Instantiates a new Static call operation. * diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/AbstractBLS12PrecompiledContract.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/AbstractBLS12PrecompiledContract.java index 21eab01f9790..67fecb92aa7e 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/AbstractBLS12PrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/AbstractBLS12PrecompiledContract.java @@ -18,7 +18,7 @@ import org.hyperledger.besu.evm.frame.ExceptionalHaltReason; import org.hyperledger.besu.evm.frame.MessageFrame; -import org.hyperledger.besu.nativelib.bls12_381.LibEthPairings; +import org.hyperledger.besu.nativelib.gnark.LibGnarkEIP2537; import java.util.Optional; import javax.annotation.Nonnull; @@ -52,7 +52,7 @@ public abstract class AbstractBLS12PrecompiledContract implements PrecompiledCon private final String name; private final byte operationId; - private final int inputLen; + private final int inputLimit; /** * Instantiates a new Abstract BLS12 precompiled contract. @@ -64,7 +64,7 @@ public abstract class AbstractBLS12PrecompiledContract implements PrecompiledCon AbstractBLS12PrecompiledContract(final String name, final byte operationId, final int inputLen) { this.name = name; this.operationId = operationId; - this.inputLen = inputLen + 1; + this.inputLimit = inputLen + 1; } @Override @@ -76,16 +76,17 @@ public String getName() { @Override public PrecompileContractResult computePrecompile( final Bytes input, @Nonnull final MessageFrame messageFrame) { - final byte[] result = new byte[LibEthPairings.EIP2537_PREALLOCATE_FOR_RESULT_BYTES]; - final byte[] error = new byte[LibEthPairings.EIP2537_PREALLOCATE_FOR_ERROR_BYTES]; + final byte[] result = new byte[LibGnarkEIP2537.EIP2537_PREALLOCATE_FOR_RESULT_BYTES]; + final byte[] error = new byte[LibGnarkEIP2537.EIP2537_PREALLOCATE_FOR_ERROR_BYTES]; final IntByReference o_len = - new IntByReference(LibEthPairings.EIP2537_PREALLOCATE_FOR_RESULT_BYTES); + new IntByReference(LibGnarkEIP2537.EIP2537_PREALLOCATE_FOR_RESULT_BYTES); final IntByReference err_len = - new IntByReference(LibEthPairings.EIP2537_PREALLOCATE_FOR_ERROR_BYTES); - final int inputSize = Math.min(inputLen, input.size()); + new IntByReference(LibGnarkEIP2537.EIP2537_PREALLOCATE_FOR_ERROR_BYTES); + + final int inputSize = Math.min(inputLimit, input.size()); final int errorNo = - LibEthPairings.eip2537_perform_operation( + LibGnarkEIP2537.eip2537_perform_operation( operationId, input.slice(0, inputSize).toArrayUnsafe(), inputSize, @@ -93,6 +94,7 @@ public PrecompileContractResult computePrecompile( o_len, error, err_len); + if (errorNo == 0) { return PrecompileContractResult.success(Bytes.wrap(result, 0, o_len.getValue())); } else { diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G1AddPrecompiledContract.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G1AddPrecompiledContract.java index 8f04c2d69e0c..59e4336a09f7 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G1AddPrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G1AddPrecompiledContract.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.evm.precompile; -import org.hyperledger.besu.nativelib.bls12_381.LibEthPairings; +import org.hyperledger.besu.nativelib.gnark.LibGnarkEIP2537; import org.apache.tuweni.bytes.Bytes; @@ -25,7 +25,7 @@ public class BLS12G1AddPrecompiledContract extends AbstractBLS12PrecompiledContr /** Instantiates a new BLS12G1 Add precompiled contract. */ public BLS12G1AddPrecompiledContract() { - super("BLS12_G1ADD", LibEthPairings.BLS12_G1ADD_OPERATION_RAW_VALUE, PARAMETER_LENGTH); + super("BLS12_G1ADD", LibGnarkEIP2537.BLS12_G1ADD_OPERATION_SHIM_VALUE, PARAMETER_LENGTH); } @Override diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G1MulPrecompiledContract.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G1MulPrecompiledContract.java index baf1ed35fc68..8c76571e1c0a 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G1MulPrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G1MulPrecompiledContract.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.evm.precompile; -import org.hyperledger.besu.nativelib.bls12_381.LibEthPairings; +import org.hyperledger.besu.nativelib.gnark.LibGnarkEIP2537; import org.apache.tuweni.bytes.Bytes; @@ -25,7 +25,7 @@ public class BLS12G1MulPrecompiledContract extends AbstractBLS12PrecompiledContr /** Instantiates a new BLS12G1 Mul precompiled contract. */ public BLS12G1MulPrecompiledContract() { - super("BLS12_G1MUL", LibEthPairings.BLS12_G1MUL_OPERATION_RAW_VALUE, PARAMETER_LENGTH); + super("BLS12_G1MUL", LibGnarkEIP2537.BLS12_G1MUL_OPERATION_SHIM_VALUE, PARAMETER_LENGTH); } @Override diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G1MultiExpPrecompiledContract.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G1MultiExpPrecompiledContract.java index e3366f491d8d..353bb203ee80 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G1MultiExpPrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G1MultiExpPrecompiledContract.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.evm.precompile; -import org.hyperledger.besu.nativelib.bls12_381.LibEthPairings; +import org.hyperledger.besu.nativelib.gnark.LibGnarkEIP2537; import org.apache.tuweni.bytes.Bytes; @@ -27,7 +27,7 @@ public class BLS12G1MultiExpPrecompiledContract extends AbstractBLS12Precompiled public BLS12G1MultiExpPrecompiledContract() { super( "BLS12_G1MULTIEXP", - LibEthPairings.BLS12_G1MULTIEXP_OPERATION_RAW_VALUE, + LibGnarkEIP2537.BLS12_G1MULTIEXP_OPERATION_SHIM_VALUE, Integer.MAX_VALUE / PARAMETER_LENGTH * PARAMETER_LENGTH); } diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G2AddPrecompiledContract.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G2AddPrecompiledContract.java index ec6a1bea34e4..3e12b5c8b2c8 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G2AddPrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G2AddPrecompiledContract.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.evm.precompile; -import org.hyperledger.besu.nativelib.bls12_381.LibEthPairings; +import org.hyperledger.besu.nativelib.gnark.LibGnarkEIP2537; import org.apache.tuweni.bytes.Bytes; @@ -25,7 +25,7 @@ public class BLS12G2AddPrecompiledContract extends AbstractBLS12PrecompiledContr /** Instantiates a new BLS12_G2 Add precompiled contract. */ public BLS12G2AddPrecompiledContract() { - super("BLS12_G2ADD", LibEthPairings.BLS12_G2ADD_OPERATION_RAW_VALUE, PARAMETER_LENGTH); + super("BLS12_G2ADD", LibGnarkEIP2537.BLS12_G2ADD_OPERATION_SHIM_VALUE, PARAMETER_LENGTH); } @Override diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G2MulPrecompiledContract.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G2MulPrecompiledContract.java index a33f4dc4a3f9..441b59c5ae90 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G2MulPrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G2MulPrecompiledContract.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.evm.precompile; -import org.hyperledger.besu.nativelib.bls12_381.LibEthPairings; +import org.hyperledger.besu.nativelib.gnark.LibGnarkEIP2537; import org.apache.tuweni.bytes.Bytes; @@ -25,7 +25,7 @@ public class BLS12G2MulPrecompiledContract extends AbstractBLS12PrecompiledContr /** Instantiates a new BLS12_G2Mul precompiled contract. */ public BLS12G2MulPrecompiledContract() { - super("BLS12_G2MUL", LibEthPairings.BLS12_G2MUL_OPERATION_RAW_VALUE, PARAMETER_LENGTH); + super("BLS12_G2MUL", LibGnarkEIP2537.BLS12_G2MUL_OPERATION_SHIM_VALUE, PARAMETER_LENGTH); } @Override diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G2MultiExpPrecompiledContract.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G2MultiExpPrecompiledContract.java index ee4448d40d37..3344f075ad43 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G2MultiExpPrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12G2MultiExpPrecompiledContract.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.evm.precompile; -import org.hyperledger.besu.nativelib.bls12_381.LibEthPairings; +import org.hyperledger.besu.nativelib.gnark.LibGnarkEIP2537; import org.apache.tuweni.bytes.Bytes; @@ -27,7 +27,7 @@ public class BLS12G2MultiExpPrecompiledContract extends AbstractBLS12Precompiled public BLS12G2MultiExpPrecompiledContract() { super( "BLS12_G2MULTIEXP", - LibEthPairings.BLS12_G2MULTIEXP_OPERATION_RAW_VALUE, + LibGnarkEIP2537.BLS12_G2MULTIEXP_OPERATION_SHIM_VALUE, Integer.MAX_VALUE / PARAMETER_LENGTH * PARAMETER_LENGTH); } diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12MapFp2ToG2PrecompiledContract.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12MapFp2ToG2PrecompiledContract.java index 650068387568..ddac7627acf6 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12MapFp2ToG2PrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12MapFp2ToG2PrecompiledContract.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.evm.precompile; -import org.hyperledger.besu.nativelib.bls12_381.LibEthPairings; +import org.hyperledger.besu.nativelib.gnark.LibGnarkEIP2537; import org.apache.tuweni.bytes.Bytes; @@ -27,7 +27,7 @@ public class BLS12MapFp2ToG2PrecompiledContract extends AbstractBLS12Precompiled public BLS12MapFp2ToG2PrecompiledContract() { super( "BLS12_MAP_FIELD_TO_CURVE", - LibEthPairings.BLS12_MAP_FP2_TO_G2_OPERATION_RAW_VALUE, + LibGnarkEIP2537.BLS12_MAP_FP2_TO_G2_OPERATION_SHIM_VALUE, PARAMETER_LENGTH); } diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12MapFpToG1PrecompiledContract.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12MapFpToG1PrecompiledContract.java index a512b24966e8..c2598358d75f 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12MapFpToG1PrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12MapFpToG1PrecompiledContract.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.evm.precompile; -import org.hyperledger.besu.nativelib.bls12_381.LibEthPairings; +import org.hyperledger.besu.nativelib.gnark.LibGnarkEIP2537; import org.apache.tuweni.bytes.Bytes; @@ -27,7 +27,7 @@ public class BLS12MapFpToG1PrecompiledContract extends AbstractBLS12PrecompiledC public BLS12MapFpToG1PrecompiledContract() { super( "BLS12_MAP_FIELD_TO_CURVE", - LibEthPairings.BLS12_MAP_FP_TO_G1_OPERATION_RAW_VALUE, + LibGnarkEIP2537.BLS12_MAP_FP_TO_G1_OPERATION_SHIM_VALUE, PARAMETER_LENGTH); } diff --git a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12PairingPrecompiledContract.java b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12PairingPrecompiledContract.java index d275db3f90b8..e0e568188757 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12PairingPrecompiledContract.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/precompile/BLS12PairingPrecompiledContract.java @@ -14,7 +14,7 @@ */ package org.hyperledger.besu.evm.precompile; -import org.hyperledger.besu.nativelib.bls12_381.LibEthPairings; +import org.hyperledger.besu.nativelib.gnark.LibGnarkEIP2537; import org.apache.tuweni.bytes.Bytes; @@ -27,7 +27,7 @@ public class BLS12PairingPrecompiledContract extends AbstractBLS12PrecompiledCon public BLS12PairingPrecompiledContract() { super( "BLS12_PAIRING", - LibEthPairings.BLS12_PAIR_OPERATION_RAW_VALUE, + LibGnarkEIP2537.BLS12_PAIR_OPERATION_SHIM_VALUE, Integer.MAX_VALUE / PARAMETER_LENGTH * PARAMETER_LENGTH); } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/code/EOFLayoutTest.java b/evm/src/test/java/org/hyperledger/besu/evm/code/EOFLayoutTest.java index 5324d7adf050..145adfb2dd9f 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/code/EOFLayoutTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/code/EOFLayoutTest.java @@ -20,6 +20,7 @@ import java.util.Collection; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -361,4 +362,11 @@ void test( assertThat(layout.getCodeSectionCount()).isNotZero(); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/gascalculator/CancunGasCalculatorTest.java b/evm/src/test/java/org/hyperledger/besu/evm/gascalculator/CancunGasCalculatorTest.java index 917b95b6880b..ded199bf3b1e 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/gascalculator/CancunGasCalculatorTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/gascalculator/CancunGasCalculatorTest.java @@ -18,6 +18,7 @@ import java.util.List; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -43,4 +44,11 @@ static Iterable blobGasses() { Arguments.of(targetGasPerBlock, 1, CancunGasCalculator.BLOB_GAS_PER_BLOB), Arguments.of(targetGasPerBlock, 3, targetGasPerBlock)); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/internal/WordsTest.java b/evm/src/test/java/org/hyperledger/besu/evm/internal/WordsTest.java index 30e651436d94..871f6ed0b1ac 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/internal/WordsTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/internal/WordsTest.java @@ -22,6 +22,7 @@ import java.util.Collection; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; import org.junit.jupiter.params.ParameterizedTest; @@ -103,4 +104,11 @@ Collection clampedToLongTestVector() { void clampedToIntTest(final Bytes theBytes, final int theExpectedInt) { assertThat(clampedToInt(theBytes)).isEqualTo(theExpectedInt); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/operations/ChainIdOperationTest.java b/evm/src/test/java/org/hyperledger/besu/evm/operations/ChainIdOperationTest.java index e8d2c3d02db9..969039266d8a 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/operations/ChainIdOperationTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/operations/ChainIdOperationTest.java @@ -27,6 +27,7 @@ import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.bytes.Bytes32; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -67,4 +68,11 @@ void shouldCalculateGasPrice(final String chainIdString, final int expectedGas) final OperationResult result = operation.execute(messageFrame, null); assertThat(result.getGasCost()).isEqualTo(expectedGas); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/operations/ConstantinopleSStoreOperationGasCostTest.java b/evm/src/test/java/org/hyperledger/besu/evm/operations/ConstantinopleSStoreOperationGasCostTest.java index 00edb9c5d170..3cea9300e115 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/operations/ConstantinopleSStoreOperationGasCostTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/operations/ConstantinopleSStoreOperationGasCostTest.java @@ -23,6 +23,7 @@ import org.hyperledger.besu.evm.testutils.TestCodeExecutor; import org.apache.tuweni.units.bigints.UInt256; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -73,4 +74,11 @@ void shouldCalculateGasAccordingToEip1283( assertThat(frame.getRemainingGas()).isEqualTo(gasLimit - expectedGasUsed); assertThat(frame.getGasRefund()).isEqualTo(expectedGasRefund); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/operations/DataCopyOperationTest.java b/evm/src/test/java/org/hyperledger/besu/evm/operations/DataCopyOperationTest.java new file mode 100644 index 000000000000..83d7f09e5a93 --- /dev/null +++ b/evm/src/test/java/org/hyperledger/besu/evm/operations/DataCopyOperationTest.java @@ -0,0 +1,179 @@ +/* + * Copyright contributors to Hyperledger Besu. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ +package org.hyperledger.besu.evm.operations; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assumptions.assumeThat; + +import org.hyperledger.besu.evm.Code; +import org.hyperledger.besu.evm.EVM; +import org.hyperledger.besu.evm.MainnetEVMs; +import org.hyperledger.besu.evm.frame.ExceptionalHaltReason; +import org.hyperledger.besu.evm.frame.MessageFrame; +import org.hyperledger.besu.evm.gascalculator.PragueGasCalculator; +import org.hyperledger.besu.evm.internal.EvmConfiguration; +import org.hyperledger.besu.evm.operation.DataCopyOperation; +import org.hyperledger.besu.evm.operation.Operation; +import org.hyperledger.besu.evm.testutils.TestMessageFrameBuilder; + +import java.util.Arrays; +import java.util.Collection; + +import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +class DataCopyOperationTest { + + static EVM evm = MainnetEVMs.pragueEOF(EvmConfiguration.DEFAULT); + + static Collection datacopyTestVector() { + return Arrays.asList( + new Object[][] { + { + "Copy after, no overlap", + Bytes.fromHexString("0123456789abcdef000000000000000000000000000000000000000000000000"), + 32, + 0, + 8, + Bytes.fromHexString( + "00000000000000000000000000000000000000000000000000000000000000000123456789abcdef"), + 12L + }, + { + "copy past data limit", + Bytes.EMPTY, + 0, + 24, + 16, + Bytes.fromHexString( + "0x0000000000000000000000000000000000000000000000000000000000000000"), + 9L + }, + { + "copy from initialized + uninitialized memory", + Bytes.fromHexString( + "0x0000000000000000000000000000000000000000000000000123456789abcdef"), + 64, + 24, + 16, + Bytes.fromHexString( + "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000123456789abcdef000000000000000000000000000000000000000000000000"), + 15L + }, + { + "overlapping src < dst", + Bytes.fromHexString( + "0x0123456789abcdef000000000000000000000000000000000000000000000000"), + 4, + 0, + 8, + Bytes.fromHexString( + "0x000000000123456789abcdef0000000000000000000000000000000000000000"), + 9L + }, + { + "overlapping src > dst", + Bytes.fromHexString( + "0x00112233445566778899aabbccddeeff00000000000000000000000000000000"), + 0, + 4, + 8, + Bytes.fromHexString( + "0x445566778899aabb000000000000000000000000000000000000000000000000"), + 9L + }, + { + "overlapping src == dst", + Bytes.fromHexString( + "0x00112233445566778899aabbccddeeff00000000000000000000000000000000"), + 4, + 4, + 8, + Bytes.fromHexString( + "0x00000000445566778899aabb0000000000000000000000000000000000000000"), + 9L + }, + {"large dst offset", Bytes.EMPTY, 0x8000000000000010L, 4, 8, Bytes.EMPTY, 8796294610953L}, + { + "large src offset", + Bytes.EMPTY, + 4, + 0x8000000000000010L, + 8, + Bytes.fromHexString( + "0x0000000000000000000000000000000000000000000000000000000000000000"), + 9L + }, + {"large len", Bytes.EMPTY, 4, 4, 0x8000000000000010L, Bytes.EMPTY, 8796093284361L} + }); + } + + @SuppressWarnings("unused") + @ParameterizedTest(name = "{0}") + @MethodSource("datacopyTestVector") + void testMCopy( + final String name, + final Bytes data, + final long dst, + final long src, + final long len, + final Bytes expected, + final long gasCost) { + DataCopyOperation subject = new DataCopyOperation(new PragueGasCalculator()); + String eofCode = + "0xef0001010004020001001d04%04x000080000367%016x67%016x67%016xd300%s" + .formatted(data.size(), dst, src, len, data.toUnprefixedHexString()); + Code code = evm.getCodeUncached(Bytes.fromHexString(eofCode)); + assumeThat(code.isValid()).isTrue(); + + MessageFrame frame = + new TestMessageFrameBuilder() + .pushStackItem(Bytes.ofUnsignedLong(len)) + .pushStackItem(Bytes.ofUnsignedLong(src)) + .pushStackItem(Bytes.ofUnsignedLong(dst)) + .initialGas(10_000_000) + .code(code) + .build(); + + Operation.OperationResult result = subject.execute(frame, evm); + + assertThat(frame.memoryWordSize()).isEqualTo((expected.size() + 31) / 32); + assertThat(frame.readMemory(0, expected.size())).isEqualTo(expected); + assertThat(result.getGasCost()).isEqualTo(gasCost); + } + + @Test + void legacyCallFails() { + DataCopyOperation subject = new DataCopyOperation(new PragueGasCalculator()); + Code code = evm.getCodeUncached(Bytes.fromHexString("0x600460046004d3")); + assumeThat(code.isValid()).isTrue(); + + MessageFrame frame = + new TestMessageFrameBuilder() + .pushStackItem(Bytes.ofUnsignedLong(4)) + .pushStackItem(Bytes.ofUnsignedLong(4)) + .pushStackItem(Bytes.ofUnsignedLong(4)) + .initialGas(10_000_000) + .code(code) + .pc(6) + .build(); + + Operation.OperationResult result = subject.execute(frame, evm); + assertThat(result.getGasCost()).isZero(); + assertThat(result.getHaltReason()).isEqualTo(ExceptionalHaltReason.INVALID_OPERATION); + } +} diff --git a/evm/src/test/java/org/hyperledger/besu/evm/operations/ExtCallOperationTest.java b/evm/src/test/java/org/hyperledger/besu/evm/operations/ExtCallOperationTest.java index 984ce28027f3..946dd0b52eb4 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/operations/ExtCallOperationTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/operations/ExtCallOperationTest.java @@ -211,9 +211,9 @@ void callWithValueTest( new TestMessageFrameBuilder() .initialGas(parentGas) .pushStackItem(CONTRACT_ADDRESS) // canary for non-returning + .pushStackItem(valueSent) .pushStackItem(Bytes.EMPTY) .pushStackItem(Bytes.EMPTY) - .pushStackItem(valueSent) .pushStackItem(CONTRACT_ADDRESS) .worldUpdater(worldUpdater) .isStatic(isStatic) diff --git a/evm/src/test/java/org/hyperledger/besu/evm/operations/LondonSStoreOperationGasCostTest.java b/evm/src/test/java/org/hyperledger/besu/evm/operations/LondonSStoreOperationGasCostTest.java index 1065d5cbd66f..f2cf95068372 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/operations/LondonSStoreOperationGasCostTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/operations/LondonSStoreOperationGasCostTest.java @@ -24,6 +24,7 @@ import org.apache.tuweni.units.bigints.UInt256; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -76,4 +77,11 @@ void shouldCalculateGasAccordingToEip3529( assertThat(frame.getRemainingGas()).isEqualTo(gasLimit - (expectedGasUsed + 2100)); assertThat(frame.getGasRefund()).isEqualTo(expectedGasRefund); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/operations/MCopyOperationTest.java b/evm/src/test/java/org/hyperledger/besu/evm/operations/MCopyOperationTest.java index a30375723a10..297531292095 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/operations/MCopyOperationTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/operations/MCopyOperationTest.java @@ -27,6 +27,7 @@ import java.util.Collection; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -134,4 +135,11 @@ void testMCopy( assertThat(frame.readMemory(0, expected.size())).isEqualTo(expected); assertThat(result.getGasCost()).isEqualTo(gasCost); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/operations/SStoreOperationTest.java b/evm/src/test/java/org/hyperledger/besu/evm/operations/SStoreOperationTest.java index e2f14dbdb2a6..3993d9f81e72 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/operations/SStoreOperationTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/operations/SStoreOperationTest.java @@ -34,6 +34,7 @@ import java.util.List; import org.apache.tuweni.units.bigints.UInt256; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -88,4 +89,11 @@ void storeOperation( final OperationResult result = operation.execute(frame, null); assertThat(result.getHaltReason()).isEqualTo(expectedHalt); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/operations/SarOperationTest.java b/evm/src/test/java/org/hyperledger/besu/evm/operations/SarOperationTest.java index 460a7294f69b..86182e47e39a 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/operations/SarOperationTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/operations/SarOperationTest.java @@ -14,6 +14,7 @@ */ package org.hyperledger.besu.evm.operations; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -27,6 +28,7 @@ import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.bytes.Bytes32; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -176,4 +178,11 @@ void shiftOperation(final String number, final String shift, final String expect operation.execute(frame, null); verify(frame).pushStackItem(Bytes.fromHexString(expectedResult)); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/operations/SelfDestructOperationTest.java b/evm/src/test/java/org/hyperledger/besu/evm/operations/SelfDestructOperationTest.java index 4c8be0fc11d4..712f60ae7c5c 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/operations/SelfDestructOperationTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/operations/SelfDestructOperationTest.java @@ -37,6 +37,7 @@ import org.hyperledger.besu.evm.worldstate.WorldUpdater; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -178,4 +179,11 @@ void checkContractDeletionEIP6780( assertThat(messageFrame.getCreates()).doesNotContain(orignatorAddress); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/operations/ShlOperationTest.java b/evm/src/test/java/org/hyperledger/besu/evm/operations/ShlOperationTest.java index 7ee283877af5..b567cb6302f5 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/operations/ShlOperationTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/operations/ShlOperationTest.java @@ -14,6 +14,7 @@ */ package org.hyperledger.besu.evm.operations; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -28,6 +29,7 @@ import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.bytes.Bytes32; import org.apache.tuweni.units.bigints.UInt256; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -113,4 +115,11 @@ void shiftOperation(final String number, final String shift, final String expect operation.execute(frame, null); verify(frame).pushStackItem(Bytes.fromHexString(expectedResult)); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/operations/ShrOperationTest.java b/evm/src/test/java/org/hyperledger/besu/evm/operations/ShrOperationTest.java index 16e5ca76319f..659c50d35ce5 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/operations/ShrOperationTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/operations/ShrOperationTest.java @@ -14,6 +14,7 @@ */ package org.hyperledger.besu.evm.operations; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -28,6 +29,7 @@ import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.bytes.Bytes32; import org.apache.tuweni.units.bigints.UInt256; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -124,4 +126,11 @@ void shiftOperation(final String number, final String shift, final String expect operation.execute(frame, null); verify(frame).pushStackItem(Bytes.fromHexString(expectedResult)); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLAKE2BFPrecompileContractTest.java b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLAKE2BFPrecompileContractTest.java index c449f3e08271..381e64c01535 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLAKE2BFPrecompileContractTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLAKE2BFPrecompileContractTest.java @@ -21,6 +21,7 @@ import org.hyperledger.besu.evm.gascalculator.PetersburgGasCalculator; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -76,4 +77,11 @@ void shouldRunFCompression( .isEqualTo(expectedComputation); assertThat(contract.gasRequirement(input)).isEqualTo(expectedGasUsed); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G1AddPrecompiledContractTest.java b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G1AddPrecompiledContractTest.java index c85f26b12db9..2ad792a410e5 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G1AddPrecompiledContractTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G1AddPrecompiledContractTest.java @@ -27,6 +27,7 @@ import com.google.common.io.CharStreams; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -79,4 +80,11 @@ void shouldCalculate( assertThat(contract.gasRequirement(input)).isEqualTo(Long.parseLong(expectedGasUsed)); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G1MulPrecompiledContractTest.java b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G1MulPrecompiledContractTest.java index cfadb57bd389..bf0f8a148183 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G1MulPrecompiledContractTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G1MulPrecompiledContractTest.java @@ -28,6 +28,7 @@ import com.google.common.io.CharStreams; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -79,4 +80,11 @@ void shouldCalculate( assertThat(contract.gasRequirement(input)).isEqualTo(Long.parseLong(expectedGasUsed)); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G1MultiExpPrecompiledContractTest.java b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G1MultiExpPrecompiledContractTest.java index 9bd4b6a542a7..27d45b1dd2ab 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G1MultiExpPrecompiledContractTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G1MultiExpPrecompiledContractTest.java @@ -28,6 +28,7 @@ import com.google.common.io.CharStreams; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -80,4 +81,11 @@ void shouldCalculate( assertThat(contract.gasRequirement(input)).isEqualTo(Long.parseLong(expectedGasUsed)); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G2AddPrecompiledContractTest.java b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G2AddPrecompiledContractTest.java index 18dcd7ea5b7d..e98422f785cd 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G2AddPrecompiledContractTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G2AddPrecompiledContractTest.java @@ -28,6 +28,7 @@ import com.google.common.io.CharStreams; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -79,4 +80,11 @@ void shouldCalculate( assertThat(contract.gasRequirement(input)).isEqualTo(Long.parseLong(expectedGasUsed)); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G2MulPrecompiledContractTest.java b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G2MulPrecompiledContractTest.java index 0dd510273e5d..32af46774776 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G2MulPrecompiledContractTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G2MulPrecompiledContractTest.java @@ -28,6 +28,7 @@ import com.google.common.io.CharStreams; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -79,4 +80,11 @@ void shouldCalculate( assertThat(contract.gasRequirement(input)).isEqualTo(Long.parseLong(expectedGasUsed)); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G2MultiExpPrecompiledContractTest.java b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G2MultiExpPrecompiledContractTest.java index b613bebe80e2..27ca15076a43 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G2MultiExpPrecompiledContractTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12G2MultiExpPrecompiledContractTest.java @@ -27,6 +27,7 @@ import com.google.common.io.CharStreams; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -79,4 +80,11 @@ void shouldCalculate( assertThat(contract.gasRequirement(input)).isEqualTo(Long.parseLong(expectedGasUsed)); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12MapFp2ToG2PrecompiledContractTest.java b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12MapFp2ToG2PrecompiledContractTest.java index 05f6b4bfb5e0..afe2826aec52 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12MapFp2ToG2PrecompiledContractTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12MapFp2ToG2PrecompiledContractTest.java @@ -28,6 +28,7 @@ import com.google.common.io.CharStreams; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -80,4 +81,11 @@ void shouldCalculate( assertThat(contract.gasRequirement(input)).isEqualTo(Long.parseLong(expectedGasUsed)); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12MapFpToG1PrecompiledContractTest.java b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12MapFpToG1PrecompiledContractTest.java index cf83346576c3..836e295dd54e 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12MapFpToG1PrecompiledContractTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12MapFpToG1PrecompiledContractTest.java @@ -28,6 +28,7 @@ import com.google.common.io.CharStreams; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -80,4 +81,11 @@ void shouldCalculate( assertThat(contract.gasRequirement(input)).isEqualTo(Long.parseLong(expectedGasUsed)); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12PairingPrecompiledContractTest.java b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12PairingPrecompiledContractTest.java index e5d219dcda07..134bc12741e5 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12PairingPrecompiledContractTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/precompile/BLS12PairingPrecompiledContractTest.java @@ -29,6 +29,7 @@ import com.google.common.collect.Streams; import com.google.common.io.CharStreams; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -89,4 +90,11 @@ void shouldCalculate( assertThat(contract.gasRequirement(input)).isEqualTo(Long.parseLong(expectedGasUsed)); } } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/precompile/ECRECPrecompiledContractTest.java b/evm/src/test/java/org/hyperledger/besu/evm/precompile/ECRECPrecompiledContractTest.java index bc4026ae64b8..ac248b947b58 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/precompile/ECRECPrecompiledContractTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/precompile/ECRECPrecompiledContractTest.java @@ -22,6 +22,7 @@ import org.apache.tuweni.bytes.Bytes; import org.apache.tuweni.bytes.Bytes32; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -355,4 +356,11 @@ void shouldRecoverAddress(final String inputString, final String expectedResult) expectedResult == null ? Bytes.EMPTY : Bytes32.fromHexString(expectedResult); assertThat(contract.computePrecompile(input, messageFrame).getOutput()).isEqualTo(expected); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/precompile/KZGPointEvalPrecompileContractTest.java b/evm/src/test/java/org/hyperledger/besu/evm/precompile/KZGPointEvalPrecompileContractTest.java index fb7ce9d397cb..bbf9b545afbd 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/precompile/KZGPointEvalPrecompileContractTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/precompile/KZGPointEvalPrecompileContractTest.java @@ -35,6 +35,7 @@ import org.apache.tuweni.bytes.Bytes32; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; @@ -91,4 +92,11 @@ public static List getPointEvaluationPrecompileTestVec record PrecompileTestParameters( Bytes input, boolean valid, Bytes returnValue, VersionedHash versionedHash) {} + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/java/org/hyperledger/besu/evm/precompile/MODEXPPrecompiledContractTest.java b/evm/src/test/java/org/hyperledger/besu/evm/precompile/MODEXPPrecompiledContractTest.java index ad2c80a41f5e..ac4fd9041a17 100644 --- a/evm/src/test/java/org/hyperledger/besu/evm/precompile/MODEXPPrecompiledContractTest.java +++ b/evm/src/test/java/org/hyperledger/besu/evm/precompile/MODEXPPrecompiledContractTest.java @@ -22,6 +22,7 @@ import org.hyperledger.besu.evm.gascalculator.ByzantiumGasCalculator; import org.apache.tuweni.bytes.Bytes; +import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; @@ -181,4 +182,11 @@ void testGasPrice( assertThat(byzantiumContract.gasRequirement(input)).isEqualTo(eip198Gas); assertThat(berlinContract.gasRequirement(input)).isEqualTo(eip2565Gas); } + + @Test + void dryRunDetector() { + assertThat(true) + .withFailMessage("This test is here so gradle --dry-run executes this class") + .isTrue(); + } } diff --git a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g1_add.csv b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g1_add.csv index 7b83f95daad0..b6714c2fcd8d 100644 --- a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g1_add.csv +++ b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g1_add.csv @@ -101,5 +101,5 @@ input,result,gas,notes 000000000000000000000000000000000106df8eba767e90cce0eabdaacc24d8e226c6865012ef8cb1460de5a319d443fdc6b4f4e58fb668943e0528b1809da10000000000000000000000000000000019789f464c95c179af18704c0b67b881991880f75ee7b03b9feafa3eafcd0f7d30a17fdd9cf439ff7fe683adca2083b50000000000000000000000000000000017a81b957a12adf474a2913e8636f169ea9cd10be62c16b88f95f5caf661f158a032a9f7d249fdf2765caa1564bed0570000000000000000000000000000000017fbf2abc62dc2678b65d509e19c9c9c5d961c72565649a078da8dff98be6236ef314e9ff8022f639ff565353345c230,00000000000000000000000000000000002c8bc5f39b2c9fea01372429e92a9c945fad152da67174f4e478fdead734d50f6e2da867c235f1f2f11bdfee67d2a7000000000000000000000000000000000c1dd27aad9f5d48c4824da3071daedf0c7a0e2a0b0ed39c50c9d25e61334a9c96765e049542ccaa00e0eccb316eec08,500, 000000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee000000000000000000000000000000000001101098f5c39893765766af4512a0c74e1bb89bc7e6fdf14e3e7337d257cc0f94658179d83320b99f31ff94cd2bac0000000000000000000000000000000003e1a9f9f44ca2cdab4f43a1a3ee3470fdf90b2fc228eb3b709fcd72f014838ac82a6d797aeefed9a0804b22ed1ce8f7,,,invalid input parameters, invalid input length for G1 addition 00000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee000000000000000000000000000000000001101098f5c39893765766af4512a0c74e1bb89bc7e6fdf14e3e7337d257cc0f94658179d83320b99f31ff94cd2bac0000000000000000000000000000000003e1a9f9f44ca2cdab4f43a1a3ee3470fdf90b2fc228eb3b709fcd72f014838ac82a6d797aeefed9a0804b22ed1ce8f7,,,invalid input parameters, invalid input length for G1 addition -0000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f570000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee000000000000000000000000000000000001101098f5c39893765766af4512a0c74e1bb89bc7e6fdf14e3e7337d257cc0f94658179d83320b99f31ff94cd2bac0000000000000000000000000000000003e1a9f9f44ca2cdab4f43a1a3ee3470fdf90b2fc228eb3b709fcd72f014838ac82a6d797aeefed9a0804b22ed1ce8f7,,,invalid input parameters, Point 0 is not on curve -0000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee000000000000000000000000000000000001101098f5c39893765766af4512a0c74e1bb89bc7e6fdf14e3e7337d257cc0f94658179d83320b99f31ff94cd2bad0000000000000000000000000000000003e1a9f9f44ca2cdab4f43a1a3ee3470fdf90b2fc228eb3b709fcd72f014838ac82a6d797aeefed9a0804b22ed1ce8f7,,,invalid input parameters, Point 1 is not on curve +0000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f570000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee000000000000000000000000000000000001101098f5c39893765766af4512a0c74e1bb89bc7e6fdf14e3e7337d257cc0f94658179d83320b99f31ff94cd2bac0000000000000000000000000000000003e1a9f9f44ca2cdab4f43a1a3ee3470fdf90b2fc228eb3b709fcd72f014838ac82a6d797aeefed9a0804b22ed1ce8f7,,,invalid point: point is not on curve +0000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee000000000000000000000000000000000001101098f5c39893765766af4512a0c74e1bb89bc7e6fdf14e3e7337d257cc0f94658179d83320b99f31ff94cd2bad0000000000000000000000000000000003e1a9f9f44ca2cdab4f43a1a3ee3470fdf90b2fc228eb3b709fcd72f014838ac82a6d797aeefed9a0804b22ed1ce8f7,,,invalid point: point is not on curve diff --git a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g1_mul.csv b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g1_mul.csv index 4ec77982a294..3eb702f1143e 100644 --- a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g1_mul.csv +++ b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g1_mul.csv @@ -101,5 +101,5 @@ input,result,gas,notes 000000000000000000000000000000000106df8eba767e90cce0eabdaacc24d8e226c6865012ef8cb1460de5a319d443fdc6b4f4e58fb668943e0528b1809da10000000000000000000000000000000019789f464c95c179af18704c0b67b881991880f75ee7b03b9feafa3eafcd0f7d30a17fdd9cf439ff7fe683adca2083b57cf23dee8d95d94046678f3bdb4b0ea3d4e3a1a2f07f582e2a98ad6eb7562cbf,000000000000000000000000000000000bf700422a382546a74376b0292f3a49ceff5597f0d2b726b1ff099bcda7ba92238a21db12eff5c314a29dd2387bec850000000000000000000000000000000005e22e3c772f3634b1ccf4e311241977eb20e7269540ef22d379de26ab80c58461dfa3b67848e0d584fb11de1917949a,12000, 00000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992feeb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e,,,invalid input parameters, invalid input length for G1 multiplication 000000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992feeb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e,,,invalid input parameters, invalid input length for G1 multiplication -0000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f570000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992feeb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e,,,invalid input parameters, Point is not on curve -000000000000000000000000000000000123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000000000000000000000000000000193fb7cedb32b2c3adc06ec11a96bc0d661869316f5e4a577a9f7c179593987beb4fb2ee424dbb2f5dd891e228b46c4a0000000000000000000000000000000000000000000000000000000000000002,,,Point is not in the expected subgroup \ No newline at end of file +0000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f570000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992feeb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e,,,invalid point: point is not on curve +000000000000000000000000000000000123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000000000000000000000000000000193fb7cedb32b2c3adc06ec11a96bc0d661869316f5e4a577a9f7c179593987beb4fb2ee424dbb2f5dd891e228b46c4a0000000000000000000000000000000000000000000000000000000000000002,,,invalid point: subgroup check failed diff --git a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g1_multiexp.csv b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g1_multiexp.csv index 413d51ee7fe7..20ed990e613e 100644 --- a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g1_multiexp.csv +++ b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g1_multiexp.csv @@ -101,8 +101,8 @@ input,result,gas,notes 0000000000000000000000000000000004acd4cb6bcfed3219c3aee9368feeb58d77a7ec81d19bea11402015f4bd0ee2d7afd86fa7ae9dd320910ca28eb6d98f0000000000000000000000000000000009fe1b0094c0c2ae80a3c5accfed5d212ce39f867aa2150b781c193a0053aecb04d06e005fbfa0a24595e5968d024be18a71abe11a893fce872f6b8a020b6d84241df03eb934b50cbf3571df4800a8330000000000000000000000000000000018cf9bf39549c35e94211b4e2d0a0157d73e1ce8a17cd724eb33c38281dac07e12eec61b27b440b220c4f21915a73a52000000000000000000000000000000000fca6d956989db84dcfe58b0310fc21b5bdc82a32838c8d9cae912d683dd9c67f68e15b3fbf9d7b430ba239c8904fdd2bbf28e5bca314391550d3a0fce50b1220965860e72c8c3865a2d4c599d31d3f1000000000000000000000000000000001897956bc232fd5a9b0ed1b533bebef8ddd9e97002513eec71d67ce1086ba8473f2c013af7d8ac548290453d9f71bd5a000000000000000000000000000000000796da5c8ac165d416c8fa36d84e11bcaa80c1bbfe18efde4b4b2c71d6d00fa24f3d51eac312cad9e854f094dcb6ec7458b208a6845aeb2bf31999042c59b7b130a7ce5297e88023953b1aef63616fe4000000000000000000000000000000000302240769257e92899da03fcc4abe1ad3944b74c3046e790e4e950f2958426b5fdc691401a1c8a531f42185d382fe5b000000000000000000000000000000000053750b58b6d2fbacae94e22b397261e541eb4abf4715b3f528dbfc3388122918b1b4b506f2fef89ea936efdef0105b3b53b6cf9e0ce1661c4960283be790abf956c2d6433529b8f3a32b92b227aebe000000000000000000000000000000000168a635a14f61734372f4bdd2fd564d77afa8588e1828d88c4c90bb50f57473b2c20585dc0e93726b84e73c61f29ef1000000000000000000000000000000000e6e92355e59304ad35b1dbfbb98db803d5fadabdef4fb1b2a54080ec9a33a7147ebb4d5219acabd949337bebbffa793b049228435ade4c4c565e65f39f13a84c747c312afcdaff352560b9fb3cfebcc000000000000000000000000000000001797bf2ac9b490cd43a346fdc64bfb22301a0a0e371bb4df8ec02342b4fcc99af43b4735665c6b1386fa04a3dc5406e3000000000000000000000000000000000fcc20f4aec04b7896ddfd86f58c2e1e9dc6f863ec3b477572c073c0f4fb07ee8dc0d5a843321446445b6e7846fbc5d556197f5ad17062d2ecbdc8887bcdd32e5ed4c48cefd9e14d622a0b800d9703300000000000000000000000000000000013ddb8ff149222a5a0a997c0b89aeee36a6ff2540de3cba8bfe6a2a64fb505f13ad956a3882082ab85bfbe72f3a3a6b600000000000000000000000000000000102c1a1085f60cd5326966a2dda0872290e1658002ff3ed95c47cc0345565076bdecdeab7082bcfb439cf7f3e445faaf721d9d7fe10104cafcad71307e785321ab87b2b69593535caecbf0e166cfda5b00000000000000000000000000000000189515e637d404ce6db58d24774609cf946074aa22066d808dc022824a26b381bf09148005c61156a976154b025d71c90000000000000000000000000000000009102e313c4517cdd3d07a66e0013eeafc996c21fbf5f0f3e7d232ad5adb781cce1657bd5750193cfc0357ff55bd012a461531ecb61365908019c1e8074a4c322df2b356eea3f3eea9aa1e0e1fc5525e0000000000000000000000000000000002e166e475ff083faad64667b683e546b2358f945b8656f9c2f3f6e87a40dc3fc087dd94874bec1c4bd5929b7c96024a00000000000000000000000000000000022bb4ba4be638d8c14a16c94522c41cd3b3ad917daa454f820b8fa35e5a48c676266feece6986e8fe920b2a5e43e4b3569c1c1ae2d18bbe36ed50db1bf30957802b09a982fbed49d4968815552e010d0000000000000000000000000000000004947bd8ea8cc3b116fb7320c573fff0f107913c18cfdba2e7e9a4c8715e334a431156f384548508df8950d681163aee0000000000000000000000000000000001e9e7494c295248184503344b8ac7bfcff41a4561de03d78691ac47980f14aa47c1eaa3cca80103f0f2ba14a2842aea2061d33b2f7e786effbd2e93101a56ba1bb62c1a773a08b72ca82f5183bea35b0000000000000000000000000000000004789b01538cfc54cad0e99538e874d13eaa7f07199af29d460927c3e622c74e0bb4185afa12c53446f56033348c332f00000000000000000000000000000000154291a8bdefbc91445ef1fe123f326b8aad652c8c54502920d4dfa912c2f42d784fbc5a16d08468d2d6ee56e7e8eaa24129b150752d2d5551a622231ab067931678454aaeb23f76168219406f0d50ee00000000000000000000000000000000029048f227fe8d1b7247a82cfd3e1b4b60cdce6b52de42c4b96641bf8fc5ba9b077e33bd4c4fce9a51b63a6a2451b427000000000000000000000000000000000c83518e1b7700d68966d592cb2e3295a2db5226eb6fef972c8a84721d1e49a30e4a8ee3494ed4bbcd2a6877e1ba597d366c32d5d3c132f32a6ac3cfe1dabb649c59ae224338f747ad98b193e83467290000000000000000000000000000000003e96431aae4330d3d204093b7af21343ace4f1960de951eeaebea51e778b1fee43ecddc46667d096edbc5ff4735586400000000000000000000000000000000183a282f4b0513be661b1b38eb5f02b51aadc591745e0bd5d2d4e5545739e26470a9ec20d78ec284268d9c54c8e4f7b6d997516cac28a3968ac6946b5bffaace0856a52e38fdcca11ddfa16cf5a568f5000000000000000000000000000000000904c85edd36dfa18ddb4e1809607708142f3c0861570f2bc8fff14c462675661f2111c10a01557fb21f7f38957bdd840000000000000000000000000000000012a3a37f34ebb23d4c9268ec9e1d53aed4747aaace497695e6ea8fdbdedd58031cb479003e8bec0d14aa1d062fa30f2ce881ec65fdc2f58e46d3ee45a06d0c5ac844ee5b62872c7ba21f6b48621a337100000000000000000000000000000000148532bffbbf8bb1688f6448854214b4273b9d5adf132aa9142c1605d1882879678b6cc70638713b9438532d427f447c0000000000000000000000000000000010971ee30d83719e10e91aad3f1f201fe35ba1a057531b1905bca3a8391a3786cd077ee0f104305eafb3c94f4546da9edcd9b95e49473277a665ca0f9a8309df9ed6ee4f25d803aa967fb8f688273e65000000000000000000000000000000000f73574aa5a06ea569de88e48fcb96e822039af296684933c1b417dde95e08d2ac9c6ad4d525b0734e24807ee99ba88a000000000000000000000000000000000523deae09e75121a6d89b45161f69f0733a9e43d88d8527a03cca8cc126aeb7a680cfaf291554403723e20440b79437334582482a9038ab906880e43a4a9d39e73b6c63604eba0c8f6399eb5c288638,000000000000000000000000000000000db91871e4cd84b3b58216b6c2e77a9521f3080182e78d3f66fe33f313013f06aec2dc5a6d483f35fadebde873bff9490000000000000000000000000000000003b9685de062b09b9e277ad5cd664d28af59064448af2b1b2b2357df6fc88e3ee7e0ac837100e0b7593944e8db43ab0f,64128, 00000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992feeb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e00000000000000000000000000000000117dbe419018f67844f6a5e1b78a1e597283ad7b8ee7ac5e58846f5a5fd68d0da99ce235a91db3ec1cf340fe6b7afcdb0000000000000000000000000000000013316f23de032d25e912ae8dc9b54c8dba1be7cecdbb9d2228d7e8f652011d46be79089dd0a6080a73c82256ce5e4ed24d0e25bf3f6fc9f4da25d21fdc71773f1947b7a8a775b8177f7eca990b05b71d0000000000000000000000000000000008ab7b556c672db7883ec47efa6d98bb08cec7902ebb421aac1c31506b177ac444ffa2d9b400a6f1cbdc6240c607ee110000000000000000000000000000000016b7fa9adf4addc2192271ce7ad3c8d8f902d061c43b7d2e8e26922009b777855bffabe7ed1a09155819eabfa87f276f973f40c12c92b703d7b7848ef8b4466d40823aad3943a312b57432b91ff68be10000000000000000000000000000000015ff9a232d9b5a8020a85d5fe08a1dcfb73ece434258fe0e2fddf10ddef0906c42dcb5f5d62fc97f934ba900f17beb330000000000000000000000000000000009cfe4ee2241d9413c616462d7bac035a6766aeaab69c81e094d75b840df45d7e0dfac0265608b93efefb9a8728b98e44c51f97bcdda93904ae26991b471e9ea942e2b5b8ed26055da11c58bc7b5002a0000000000000000000000000000000017a17b82e3bfadf3250210d8ef572c02c3610d65ab4d7366e0b748768a28ee6a1b51f77ed686a64f087f36f641e7dca900000000000000000000000000000000077ea73d233ccea51dc4d5acecf6d9332bf17ae51598f4b394a5f62fb387e9c9aa1d6823b64a074f5873422ca57545d38964d5867927bc3e35a0b4c457482373969bff5edff8a781d65573e07fd87b89000000000000000000000000000000000c1243478f4fbdc21ea9b241655947a28accd058d0cdb4f9f0576d32f09dddaf0850464550ff07cab5927b3e4c863ce90000000000000000000000000000000015fb54db10ffac0b6cd374eb7168a8cb3df0a7d5f872d8e98c1f623deb66df5dd08ff4c3658f2905ec8bd02598bd4f90787c38b944eadbd03fd3187f450571740f6cd00e5b2e560165846eb800e5c944000000000000000000000000000000000328f09584b6d6c98a709fc22e184123994613aca95a28ac53df8523b92273eb6f4e2d9b2a7dcebb474604d54a210719000000000000000000000000000000001220ebde579911fe2e707446aaad8d3789fae96ae2e23670a4fd856ed82daaab704779eb4224027c1ed9460f39951a1baaee7ae2a237e8e53560c79e7baa9adf9c00a0ea4d6f514e7a6832eb15cef1e10000000000000000000000000000000002ebfa98aa92c32a29ebe17fcb1819ba82e686abd9371fcee8ea793b4c72b6464085044f818f1f5902396df0122830cb00000000000000000000000000000000001184715b8432ed190b459113977289a890f68f6085ea111466af15103c9c02467da33e01d6bff87fd57db6ccba442adac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c0000000000000000000000000000000009d6424e002439998e91cd509f85751ad25e574830c564e7568347d19e3f38add0cab067c0b4b0801785a78bcbeaf246000000000000000000000000000000000ef6d7db03ee654503b46ff0dbc3297536a422e963bda9871a8da8f4eeb98dedebd6071c4880b4636198f4c2375dc795bb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd1080000000000000000000000000000000002d1cdb93191d1f9f0308c2c55d0208a071f5520faca7c52ab0311dbc9ba563bd33b5dd6baa77bf45ac2c3269e945f4800000000000000000000000000000000072a52106e6d7b92c594c4dacd20ef5fab7141e45c231457cd7e71463b2254ee6e72689e516fa6a8f29f2a173ce0a190fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f81876720000000000000000000000000000000000641642f6801d39a09a536f506056f72a619c50d043673d6d39aa4af11d8e3ded38b9c3bbc970dbc1bd55d68f94b50d0000000000000000000000000000000009ab050de356a24aea90007c6b319614ba2f2ed67223b972767117769e3c8e31ee4056494628fb2892d3d37afb6ac943b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea000000000000000000000000000000000fd4893addbd58fb1bf30b8e62bef068da386edbab9541d198e8719b2de5beb9223d87387af82e8b55bd521ff3e47e2d000000000000000000000000000000000f3a923b76473d5b5a53501790cb02597bb778bdacb3805a9002b152d22241ad131d0f0d6a260739cbab2c2fe602870e3b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c760000000000000000000000000000000002cb4b24c8aa799fd7cb1e4ab1aab1372113200343d8526ea7bc64dfaf926baf5d90756a40e35617854a2079cd07fba40000000000000000000000000000000003327ca22bd64ebd673cc6d5b02b2a8804d5353c9d251637c4273ad08d581cc0d58da9bea27c37a0b3f4961dbafd276bdd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257c00000000000000000000000000000000024ad70f2b2105ca37112858e84c6f5e3ffd4a8b064522faae1ecba38fabd52a6274cb46b00075deb87472f11f2e67d90000000000000000000000000000000010a502c8b2a68aa30d2cb719273550b9a3c283c35b2e18a01b0b765344ffaaa5cb30a1e3e6ecd3a53ab67658a57876817010b134989c8368c7f831f9dd9f9a890e2c1435681107414f2e8637153bbf6a0000000000000000000000000000000000704cc57c8e0944326ddc7c747d9e7347a7f6918977132eea269f161461eb64066f773352f293a3ac458dc3ccd5026a000000000000000000000000000000001099d3c2bb2d082f2fdcbed013f7ac69e8624f4fcf6dfab3ee9dcf7fbbdb8c49ee79de40e887c0b6828d2496e3a6f76894c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a65905400000000000000000000000000000000130535a29392c77f045ac90e47f2e7b3cffff94494fe605aad345b41043f6663ada8e2e7ecd3d06f3b8854ef92212f42000000000000000000000000000000001699a3cc1f10cd2ed0dc68eb916b4402e4f12bf4746893bf70e26e209e605ea89e3d53e7ac52bd07713d3c8fc671931db3682accc3939283b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746,,,invalid input parameters, invalid input length for G1 multiplication 000000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992feeb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e00000000000000000000000000000000117dbe419018f67844f6a5e1b78a1e597283ad7b8ee7ac5e58846f5a5fd68d0da99ce235a91db3ec1cf340fe6b7afcdb0000000000000000000000000000000013316f23de032d25e912ae8dc9b54c8dba1be7cecdbb9d2228d7e8f652011d46be79089dd0a6080a73c82256ce5e4ed24d0e25bf3f6fc9f4da25d21fdc71773f1947b7a8a775b8177f7eca990b05b71d0000000000000000000000000000000008ab7b556c672db7883ec47efa6d98bb08cec7902ebb421aac1c31506b177ac444ffa2d9b400a6f1cbdc6240c607ee110000000000000000000000000000000016b7fa9adf4addc2192271ce7ad3c8d8f902d061c43b7d2e8e26922009b777855bffabe7ed1a09155819eabfa87f276f973f40c12c92b703d7b7848ef8b4466d40823aad3943a312b57432b91ff68be10000000000000000000000000000000015ff9a232d9b5a8020a85d5fe08a1dcfb73ece434258fe0e2fddf10ddef0906c42dcb5f5d62fc97f934ba900f17beb330000000000000000000000000000000009cfe4ee2241d9413c616462d7bac035a6766aeaab69c81e094d75b840df45d7e0dfac0265608b93efefb9a8728b98e44c51f97bcdda93904ae26991b471e9ea942e2b5b8ed26055da11c58bc7b5002a0000000000000000000000000000000017a17b82e3bfadf3250210d8ef572c02c3610d65ab4d7366e0b748768a28ee6a1b51f77ed686a64f087f36f641e7dca900000000000000000000000000000000077ea73d233ccea51dc4d5acecf6d9332bf17ae51598f4b394a5f62fb387e9c9aa1d6823b64a074f5873422ca57545d38964d5867927bc3e35a0b4c457482373969bff5edff8a781d65573e07fd87b89000000000000000000000000000000000c1243478f4fbdc21ea9b241655947a28accd058d0cdb4f9f0576d32f09dddaf0850464550ff07cab5927b3e4c863ce90000000000000000000000000000000015fb54db10ffac0b6cd374eb7168a8cb3df0a7d5f872d8e98c1f623deb66df5dd08ff4c3658f2905ec8bd02598bd4f90787c38b944eadbd03fd3187f450571740f6cd00e5b2e560165846eb800e5c944000000000000000000000000000000000328f09584b6d6c98a709fc22e184123994613aca95a28ac53df8523b92273eb6f4e2d9b2a7dcebb474604d54a210719000000000000000000000000000000001220ebde579911fe2e707446aaad8d3789fae96ae2e23670a4fd856ed82daaab704779eb4224027c1ed9460f39951a1baaee7ae2a237e8e53560c79e7baa9adf9c00a0ea4d6f514e7a6832eb15cef1e10000000000000000000000000000000002ebfa98aa92c32a29ebe17fcb1819ba82e686abd9371fcee8ea793b4c72b6464085044f818f1f5902396df0122830cb00000000000000000000000000000000001184715b8432ed190b459113977289a890f68f6085ea111466af15103c9c02467da33e01d6bff87fd57db6ccba442adac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c0000000000000000000000000000000009d6424e002439998e91cd509f85751ad25e574830c564e7568347d19e3f38add0cab067c0b4b0801785a78bcbeaf246000000000000000000000000000000000ef6d7db03ee654503b46ff0dbc3297536a422e963bda9871a8da8f4eeb98dedebd6071c4880b4636198f4c2375dc795bb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd1080000000000000000000000000000000002d1cdb93191d1f9f0308c2c55d0208a071f5520faca7c52ab0311dbc9ba563bd33b5dd6baa77bf45ac2c3269e945f4800000000000000000000000000000000072a52106e6d7b92c594c4dacd20ef5fab7141e45c231457cd7e71463b2254ee6e72689e516fa6a8f29f2a173ce0a190fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f81876720000000000000000000000000000000000641642f6801d39a09a536f506056f72a619c50d043673d6d39aa4af11d8e3ded38b9c3bbc970dbc1bd55d68f94b50d0000000000000000000000000000000009ab050de356a24aea90007c6b319614ba2f2ed67223b972767117769e3c8e31ee4056494628fb2892d3d37afb6ac943b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea000000000000000000000000000000000fd4893addbd58fb1bf30b8e62bef068da386edbab9541d198e8719b2de5beb9223d87387af82e8b55bd521ff3e47e2d000000000000000000000000000000000f3a923b76473d5b5a53501790cb02597bb778bdacb3805a9002b152d22241ad131d0f0d6a260739cbab2c2fe602870e3b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c760000000000000000000000000000000002cb4b24c8aa799fd7cb1e4ab1aab1372113200343d8526ea7bc64dfaf926baf5d90756a40e35617854a2079cd07fba40000000000000000000000000000000003327ca22bd64ebd673cc6d5b02b2a8804d5353c9d251637c4273ad08d581cc0d58da9bea27c37a0b3f4961dbafd276bdd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257c00000000000000000000000000000000024ad70f2b2105ca37112858e84c6f5e3ffd4a8b064522faae1ecba38fabd52a6274cb46b00075deb87472f11f2e67d90000000000000000000000000000000010a502c8b2a68aa30d2cb719273550b9a3c283c35b2e18a01b0b765344ffaaa5cb30a1e3e6ecd3a53ab67658a57876817010b134989c8368c7f831f9dd9f9a890e2c1435681107414f2e8637153bbf6a0000000000000000000000000000000000704cc57c8e0944326ddc7c747d9e7347a7f6918977132eea269f161461eb64066f773352f293a3ac458dc3ccd5026a000000000000000000000000000000001099d3c2bb2d082f2fdcbed013f7ac69e8624f4fcf6dfab3ee9dcf7fbbdb8c49ee79de40e887c0b6828d2496e3a6f76894c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a65905400000000000000000000000000000000130535a29392c77f045ac90e47f2e7b3cffff94494fe605aad345b41043f6663ada8e2e7ecd3d06f3b8854ef92212f42000000000000000000000000000000001699a3cc1f10cd2ed0dc68eb916b4402e4f12bf4746893bf70e26e209e605ea89e3d53e7ac52bd07713d3c8fc671931db3682accc3939283b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746,,,invalid input parameters, invalid input length for G1 multiplication -,,,invalid input parameters, Invalid number of pairs -0000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f570000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992feeb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e00000000000000000000000000000000117dbe419018f67844f6a5e1b78a1e597283ad7b8ee7ac5e58846f5a5fd68d0da99ce235a91db3ec1cf340fe6b7afcdb0000000000000000000000000000000013316f23de032d25e912ae8dc9b54c8dba1be7cecdbb9d2228d7e8f652011d46be79089dd0a6080a73c82256ce5e4ed24d0e25bf3f6fc9f4da25d21fdc71773f1947b7a8a775b8177f7eca990b05b71d0000000000000000000000000000000008ab7b556c672db7883ec47efa6d98bb08cec7902ebb421aac1c31506b177ac444ffa2d9b400a6f1cbdc6240c607ee110000000000000000000000000000000016b7fa9adf4addc2192271ce7ad3c8d8f902d061c43b7d2e8e26922009b777855bffabe7ed1a09155819eabfa87f276f973f40c12c92b703d7b7848ef8b4466d40823aad3943a312b57432b91ff68be10000000000000000000000000000000015ff9a232d9b5a8020a85d5fe08a1dcfb73ece434258fe0e2fddf10ddef0906c42dcb5f5d62fc97f934ba900f17beb330000000000000000000000000000000009cfe4ee2241d9413c616462d7bac035a6766aeaab69c81e094d75b840df45d7e0dfac0265608b93efefb9a8728b98e44c51f97bcdda93904ae26991b471e9ea942e2b5b8ed26055da11c58bc7b5002a0000000000000000000000000000000017a17b82e3bfadf3250210d8ef572c02c3610d65ab4d7366e0b748768a28ee6a1b51f77ed686a64f087f36f641e7dca900000000000000000000000000000000077ea73d233ccea51dc4d5acecf6d9332bf17ae51598f4b394a5f62fb387e9c9aa1d6823b64a074f5873422ca57545d38964d5867927bc3e35a0b4c457482373969bff5edff8a781d65573e07fd87b89000000000000000000000000000000000c1243478f4fbdc21ea9b241655947a28accd058d0cdb4f9f0576d32f09dddaf0850464550ff07cab5927b3e4c863ce90000000000000000000000000000000015fb54db10ffac0b6cd374eb7168a8cb3df0a7d5f872d8e98c1f623deb66df5dd08ff4c3658f2905ec8bd02598bd4f90787c38b944eadbd03fd3187f450571740f6cd00e5b2e560165846eb800e5c944000000000000000000000000000000000328f09584b6d6c98a709fc22e184123994613aca95a28ac53df8523b92273eb6f4e2d9b2a7dcebb474604d54a210719000000000000000000000000000000001220ebde579911fe2e707446aaad8d3789fae96ae2e23670a4fd856ed82daaab704779eb4224027c1ed9460f39951a1baaee7ae2a237e8e53560c79e7baa9adf9c00a0ea4d6f514e7a6832eb15cef1e10000000000000000000000000000000002ebfa98aa92c32a29ebe17fcb1819ba82e686abd9371fcee8ea793b4c72b6464085044f818f1f5902396df0122830cb00000000000000000000000000000000001184715b8432ed190b459113977289a890f68f6085ea111466af15103c9c02467da33e01d6bff87fd57db6ccba442adac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c0000000000000000000000000000000009d6424e002439998e91cd509f85751ad25e574830c564e7568347d19e3f38add0cab067c0b4b0801785a78bcbeaf246000000000000000000000000000000000ef6d7db03ee654503b46ff0dbc3297536a422e963bda9871a8da8f4eeb98dedebd6071c4880b4636198f4c2375dc795bb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd1080000000000000000000000000000000002d1cdb93191d1f9f0308c2c55d0208a071f5520faca7c52ab0311dbc9ba563bd33b5dd6baa77bf45ac2c3269e945f4800000000000000000000000000000000072a52106e6d7b92c594c4dacd20ef5fab7141e45c231457cd7e71463b2254ee6e72689e516fa6a8f29f2a173ce0a190fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f81876720000000000000000000000000000000000641642f6801d39a09a536f506056f72a619c50d043673d6d39aa4af11d8e3ded38b9c3bbc970dbc1bd55d68f94b50d0000000000000000000000000000000009ab050de356a24aea90007c6b319614ba2f2ed67223b972767117769e3c8e31ee4056494628fb2892d3d37afb6ac943b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea000000000000000000000000000000000fd4893addbd58fb1bf30b8e62bef068da386edbab9541d198e8719b2de5beb9223d87387af82e8b55bd521ff3e47e2d000000000000000000000000000000000f3a923b76473d5b5a53501790cb02597bb778bdacb3805a9002b152d22241ad131d0f0d6a260739cbab2c2fe602870e3b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c760000000000000000000000000000000002cb4b24c8aa799fd7cb1e4ab1aab1372113200343d8526ea7bc64dfaf926baf5d90756a40e35617854a2079cd07fba40000000000000000000000000000000003327ca22bd64ebd673cc6d5b02b2a8804d5353c9d251637c4273ad08d581cc0d58da9bea27c37a0b3f4961dbafd276bdd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257c00000000000000000000000000000000024ad70f2b2105ca37112858e84c6f5e3ffd4a8b064522faae1ecba38fabd52a6274cb46b00075deb87472f11f2e67d90000000000000000000000000000000010a502c8b2a68aa30d2cb719273550b9a3c283c35b2e18a01b0b765344ffaaa5cb30a1e3e6ecd3a53ab67658a57876817010b134989c8368c7f831f9dd9f9a890e2c1435681107414f2e8637153bbf6a0000000000000000000000000000000000704cc57c8e0944326ddc7c747d9e7347a7f6918977132eea269f161461eb64066f773352f293a3ac458dc3ccd5026a000000000000000000000000000000001099d3c2bb2d082f2fdcbed013f7ac69e8624f4fcf6dfab3ee9dcf7fbbdb8c49ee79de40e887c0b6828d2496e3a6f76894c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a65905400000000000000000000000000000000130535a29392c77f045ac90e47f2e7b3cffff94494fe605aad345b41043f6663ada8e2e7ecd3d06f3b8854ef92212f42000000000000000000000000000000001699a3cc1f10cd2ed0dc68eb916b4402e4f12bf4746893bf70e26e209e605ea89e3d53e7ac52bd07713d3c8fc671931db3682accc3939283b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746,,,invalid input parameters, Point is not on curve -0000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992feeb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e00000000000000000000000000000000117dbe419018f67844f6a5e1b78a1e597283ad7b8ee7ac5e58846f5a5fd68d0da99ce235a91db3ec1cf340fe6b7afcdb0000000000000000000000000000000013316f23de032d25e912ae8dc9b54c8dba1be7cecdbb9d2228d7e8f652011d46be79089dd0a6080a73c82256ce5e4ed24d0e25bf3f6fc9f4da25d21fdc71773f1947b7a8a775b8177f7eca990b05b71d0000000000000000000000000000000008ab7b556c672db7883ec47efa6d98bb08cec7902ebb421aac1c31506b177ac444ffa2d9b400a6f1cbdc6240c607ee110000000000000000000000000000000016b7fa9adf4addc2192271ce7ad3c8d8f902d061c43b7d2e8e26922009b777855bffabe7ed1a09155819eabfa87f276f973f40c12c92b703d7b7848ef8b4466d40823aad3943a312b57432b91ff68be10000000000000000000000000000000015ff9a232d9b5a8020a85d5fe08a1dcfb73ece434258fe0e2fddf10ddef0906c42dcb5f5d62fc97f934ba900f17beb330000000000000000000000000000000009cfe4ee2241d9413c616462d7bac035a6766aeaab69c81e094d75b840df45d7e0dfac0265608b93efefb9a8728b98e44c51f97bcdda93904ae26991b471e9ea942e2b5b8ed26055da11c58bc7b5002a0000000000000000000000000000000017a17b82e3bfadf3250210d8ef572c02c3610d65ab4d7366e0b748768a28ee6a1b51f77ed686a64f087f36f641e7dca900000000000000000000000000000000077ea73d233ccea51dc4d5acecf6d9332bf17ae51598f4b394a5f62fb387e9c9aa1d6823b64a074f5873422ca57545d38964d5867927bc3e35a0b4c457482373969bff5edff8a781d65573e07fd87b89000000000000000000000000000000000c1243478f4fbdc21ea9b241655947a28accd058d0cdb4f9f0576d32f09dddaf0850464550ff07cab5927b3e4c863ce90000000000000000000000000000000015fb54db10ffac0b6cd374eb7168a8cb3df0a7d5f872d8e98c1f623deb66df5dd08ff4c3658f2905ec8bd02598bd4f90787c38b944eadbd03fd3187f450571740f6cd00e5b2e560165846eb800e5c944000000000000000000000000000000000328f09584b6d6c98a709fc22e184123994613aca95a28ac53df8523b92273eb6f4e2d9b2a7dcebb474604d54a210719000000000000000000000000000000001220ebde579911fe2e707446aaad8d3789fae96ae2e23670a4fd856ed82daaab704779eb4224027c1ed9460f39951a1baaee7ae2a237e8e53560c79e7baa9adf9c00a0ea4d6f514e7a6832eb15cef1e10000000000000000000000000000000002ebfa98aa92c32a29ebe17fcb1819ba82e686abd9371fcee8ea793b4c72b6464085044f818f1f5902396df0122830cb00000000000000000000000000000000001184715b8432ed190b459113977289a890f68f6085ea111466af15103c9c02467da33e01d6bff87fd57db6ccba442adac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c0000000000000000000000000000000009d6424e002439998e91cd509f85751ad25e574830c564e7568347d19e3f38add0cab067c0b4b0801785a78bcbeaf246000000000000000000000000000000000ef6d7db03ee654503b46ff0dbc3297536a422e963bda9871a8da8f4eeb98dedebd6071c4880b4636198f4c2375dc795bb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd1080000000000000000000000000000000002d1cdb93191d1f9f0308c2c55d0208a071f5520faca7c52ab0311dbc9ba563bd33b5dd6baa77bf45ac2c3269e945f4800000000000000000000000000000000072a52106e6d7b92c594c4dacd20ef5fab7141e45c231457cd7e71463b2254ee6e72689e516fa6a8f29f2a173ce0a190fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f81876720000000000000000000000000000000000641642f6801d39a09a536f506056f72a619c50d043673d6d39aa4af11d8e3ded38b9c3bbc970dbc1bd55d68f94b50d0000000000000000000000000000000009ab050de356a24aea90007c6b319614ba2f2ed67223b972767117769e3c8e31ee4056494628fb2892d3d37afb6ac943b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea000000000000000000000000000000000fd4893addbd58fb1bf30b8e62bef068da386edbab9541d198e8719b2de5beb9223d87387af82e8b55bd521ff3e47e2d000000000000000000000000000000000f3a923b76473d5b5a53501790cb02597bb778bdacb3805a9002b152d22241ad131d0f0d6a260739cbab2c2fe602870e3b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c760000000000000000000000000000000002cb4b24c8aa799fd7cb1e4ab1aab1372113200343d8526ea7bc64dfaf926baf5d90756a40e35617854a2079cd07fba40000000000000000000000000000000003327ca22bd64ebd673cc6d5b02b2a8804d5353c9d251637c4273ad08d581cc0d58da9bea27c37a0b3f4961dbafd276bdd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257c00000000000000000000000000000000024ad70f2b2105ca37112858e84c6f5e3ffd4a8b064522faae1ecba38fabd52a6274cb46b00075deb87472f11f2e67d90000000000000000000000000000000010a502c8b2a68aa30d2cb719273550b9a3c283c35b2e18a01b0b765344ffaaa5cb30a1e3e6ecd3a53ab67658a57876817010b134989c8368c7f831f9dd9f9a890e2c1435681107414f2e8637153bbf6a0000000000000000000000000000000000704cc57c8e0944326ddc7c747d9e7347a7f6918977132eea269f161461eb64066f773352f293a3ac458dc3ccd5026a000000000000000000000000000000001099d3c2bb2d082f2fdcbed013f7ac69e8624f4fcf6dfab3ee9dcf7fbbdb8c49ee79de40e887c0b6828d2496e3a6f76894c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a65905400000000000000000000000000000000130535a29392c77f045ac90e47f2e7b3cffff94494fe605aad345b41043f6663ada8e2e7ecd3d06f3b8854ef92212f43000000000000000000000000000000001699a3cc1f10cd2ed0dc68eb916b4402e4f12bf4746893bf70e26e209e605ea89e3d53e7ac52bd07713d3c8fc671931db3682accc3939283b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746,,,invalid input parameters, Point is not on curve +,,,invalid input parameters, invalid number of pairs +0000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f570000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992feeb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e00000000000000000000000000000000117dbe419018f67844f6a5e1b78a1e597283ad7b8ee7ac5e58846f5a5fd68d0da99ce235a91db3ec1cf340fe6b7afcdb0000000000000000000000000000000013316f23de032d25e912ae8dc9b54c8dba1be7cecdbb9d2228d7e8f652011d46be79089dd0a6080a73c82256ce5e4ed24d0e25bf3f6fc9f4da25d21fdc71773f1947b7a8a775b8177f7eca990b05b71d0000000000000000000000000000000008ab7b556c672db7883ec47efa6d98bb08cec7902ebb421aac1c31506b177ac444ffa2d9b400a6f1cbdc6240c607ee110000000000000000000000000000000016b7fa9adf4addc2192271ce7ad3c8d8f902d061c43b7d2e8e26922009b777855bffabe7ed1a09155819eabfa87f276f973f40c12c92b703d7b7848ef8b4466d40823aad3943a312b57432b91ff68be10000000000000000000000000000000015ff9a232d9b5a8020a85d5fe08a1dcfb73ece434258fe0e2fddf10ddef0906c42dcb5f5d62fc97f934ba900f17beb330000000000000000000000000000000009cfe4ee2241d9413c616462d7bac035a6766aeaab69c81e094d75b840df45d7e0dfac0265608b93efefb9a8728b98e44c51f97bcdda93904ae26991b471e9ea942e2b5b8ed26055da11c58bc7b5002a0000000000000000000000000000000017a17b82e3bfadf3250210d8ef572c02c3610d65ab4d7366e0b748768a28ee6a1b51f77ed686a64f087f36f641e7dca900000000000000000000000000000000077ea73d233ccea51dc4d5acecf6d9332bf17ae51598f4b394a5f62fb387e9c9aa1d6823b64a074f5873422ca57545d38964d5867927bc3e35a0b4c457482373969bff5edff8a781d65573e07fd87b89000000000000000000000000000000000c1243478f4fbdc21ea9b241655947a28accd058d0cdb4f9f0576d32f09dddaf0850464550ff07cab5927b3e4c863ce90000000000000000000000000000000015fb54db10ffac0b6cd374eb7168a8cb3df0a7d5f872d8e98c1f623deb66df5dd08ff4c3658f2905ec8bd02598bd4f90787c38b944eadbd03fd3187f450571740f6cd00e5b2e560165846eb800e5c944000000000000000000000000000000000328f09584b6d6c98a709fc22e184123994613aca95a28ac53df8523b92273eb6f4e2d9b2a7dcebb474604d54a210719000000000000000000000000000000001220ebde579911fe2e707446aaad8d3789fae96ae2e23670a4fd856ed82daaab704779eb4224027c1ed9460f39951a1baaee7ae2a237e8e53560c79e7baa9adf9c00a0ea4d6f514e7a6832eb15cef1e10000000000000000000000000000000002ebfa98aa92c32a29ebe17fcb1819ba82e686abd9371fcee8ea793b4c72b6464085044f818f1f5902396df0122830cb00000000000000000000000000000000001184715b8432ed190b459113977289a890f68f6085ea111466af15103c9c02467da33e01d6bff87fd57db6ccba442adac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c0000000000000000000000000000000009d6424e002439998e91cd509f85751ad25e574830c564e7568347d19e3f38add0cab067c0b4b0801785a78bcbeaf246000000000000000000000000000000000ef6d7db03ee654503b46ff0dbc3297536a422e963bda9871a8da8f4eeb98dedebd6071c4880b4636198f4c2375dc795bb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd1080000000000000000000000000000000002d1cdb93191d1f9f0308c2c55d0208a071f5520faca7c52ab0311dbc9ba563bd33b5dd6baa77bf45ac2c3269e945f4800000000000000000000000000000000072a52106e6d7b92c594c4dacd20ef5fab7141e45c231457cd7e71463b2254ee6e72689e516fa6a8f29f2a173ce0a190fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f81876720000000000000000000000000000000000641642f6801d39a09a536f506056f72a619c50d043673d6d39aa4af11d8e3ded38b9c3bbc970dbc1bd55d68f94b50d0000000000000000000000000000000009ab050de356a24aea90007c6b319614ba2f2ed67223b972767117769e3c8e31ee4056494628fb2892d3d37afb6ac943b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea000000000000000000000000000000000fd4893addbd58fb1bf30b8e62bef068da386edbab9541d198e8719b2de5beb9223d87387af82e8b55bd521ff3e47e2d000000000000000000000000000000000f3a923b76473d5b5a53501790cb02597bb778bdacb3805a9002b152d22241ad131d0f0d6a260739cbab2c2fe602870e3b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c760000000000000000000000000000000002cb4b24c8aa799fd7cb1e4ab1aab1372113200343d8526ea7bc64dfaf926baf5d90756a40e35617854a2079cd07fba40000000000000000000000000000000003327ca22bd64ebd673cc6d5b02b2a8804d5353c9d251637c4273ad08d581cc0d58da9bea27c37a0b3f4961dbafd276bdd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257c00000000000000000000000000000000024ad70f2b2105ca37112858e84c6f5e3ffd4a8b064522faae1ecba38fabd52a6274cb46b00075deb87472f11f2e67d90000000000000000000000000000000010a502c8b2a68aa30d2cb719273550b9a3c283c35b2e18a01b0b765344ffaaa5cb30a1e3e6ecd3a53ab67658a57876817010b134989c8368c7f831f9dd9f9a890e2c1435681107414f2e8637153bbf6a0000000000000000000000000000000000704cc57c8e0944326ddc7c747d9e7347a7f6918977132eea269f161461eb64066f773352f293a3ac458dc3ccd5026a000000000000000000000000000000001099d3c2bb2d082f2fdcbed013f7ac69e8624f4fcf6dfab3ee9dcf7fbbdb8c49ee79de40e887c0b6828d2496e3a6f76894c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a65905400000000000000000000000000000000130535a29392c77f045ac90e47f2e7b3cffff94494fe605aad345b41043f6663ada8e2e7ecd3d06f3b8854ef92212f42000000000000000000000000000000001699a3cc1f10cd2ed0dc68eb916b4402e4f12bf4746893bf70e26e209e605ea89e3d53e7ac52bd07713d3c8fc671931db3682accc3939283b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746,,,invalid point: point is not on curve +0000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992feeb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e00000000000000000000000000000000117dbe419018f67844f6a5e1b78a1e597283ad7b8ee7ac5e58846f5a5fd68d0da99ce235a91db3ec1cf340fe6b7afcdb0000000000000000000000000000000013316f23de032d25e912ae8dc9b54c8dba1be7cecdbb9d2228d7e8f652011d46be79089dd0a6080a73c82256ce5e4ed24d0e25bf3f6fc9f4da25d21fdc71773f1947b7a8a775b8177f7eca990b05b71d0000000000000000000000000000000008ab7b556c672db7883ec47efa6d98bb08cec7902ebb421aac1c31506b177ac444ffa2d9b400a6f1cbdc6240c607ee110000000000000000000000000000000016b7fa9adf4addc2192271ce7ad3c8d8f902d061c43b7d2e8e26922009b777855bffabe7ed1a09155819eabfa87f276f973f40c12c92b703d7b7848ef8b4466d40823aad3943a312b57432b91ff68be10000000000000000000000000000000015ff9a232d9b5a8020a85d5fe08a1dcfb73ece434258fe0e2fddf10ddef0906c42dcb5f5d62fc97f934ba900f17beb330000000000000000000000000000000009cfe4ee2241d9413c616462d7bac035a6766aeaab69c81e094d75b840df45d7e0dfac0265608b93efefb9a8728b98e44c51f97bcdda93904ae26991b471e9ea942e2b5b8ed26055da11c58bc7b5002a0000000000000000000000000000000017a17b82e3bfadf3250210d8ef572c02c3610d65ab4d7366e0b748768a28ee6a1b51f77ed686a64f087f36f641e7dca900000000000000000000000000000000077ea73d233ccea51dc4d5acecf6d9332bf17ae51598f4b394a5f62fb387e9c9aa1d6823b64a074f5873422ca57545d38964d5867927bc3e35a0b4c457482373969bff5edff8a781d65573e07fd87b89000000000000000000000000000000000c1243478f4fbdc21ea9b241655947a28accd058d0cdb4f9f0576d32f09dddaf0850464550ff07cab5927b3e4c863ce90000000000000000000000000000000015fb54db10ffac0b6cd374eb7168a8cb3df0a7d5f872d8e98c1f623deb66df5dd08ff4c3658f2905ec8bd02598bd4f90787c38b944eadbd03fd3187f450571740f6cd00e5b2e560165846eb800e5c944000000000000000000000000000000000328f09584b6d6c98a709fc22e184123994613aca95a28ac53df8523b92273eb6f4e2d9b2a7dcebb474604d54a210719000000000000000000000000000000001220ebde579911fe2e707446aaad8d3789fae96ae2e23670a4fd856ed82daaab704779eb4224027c1ed9460f39951a1baaee7ae2a237e8e53560c79e7baa9adf9c00a0ea4d6f514e7a6832eb15cef1e10000000000000000000000000000000002ebfa98aa92c32a29ebe17fcb1819ba82e686abd9371fcee8ea793b4c72b6464085044f818f1f5902396df0122830cb00000000000000000000000000000000001184715b8432ed190b459113977289a890f68f6085ea111466af15103c9c02467da33e01d6bff87fd57db6ccba442adac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c0000000000000000000000000000000009d6424e002439998e91cd509f85751ad25e574830c564e7568347d19e3f38add0cab067c0b4b0801785a78bcbeaf246000000000000000000000000000000000ef6d7db03ee654503b46ff0dbc3297536a422e963bda9871a8da8f4eeb98dedebd6071c4880b4636198f4c2375dc795bb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd1080000000000000000000000000000000002d1cdb93191d1f9f0308c2c55d0208a071f5520faca7c52ab0311dbc9ba563bd33b5dd6baa77bf45ac2c3269e945f4800000000000000000000000000000000072a52106e6d7b92c594c4dacd20ef5fab7141e45c231457cd7e71463b2254ee6e72689e516fa6a8f29f2a173ce0a190fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f81876720000000000000000000000000000000000641642f6801d39a09a536f506056f72a619c50d043673d6d39aa4af11d8e3ded38b9c3bbc970dbc1bd55d68f94b50d0000000000000000000000000000000009ab050de356a24aea90007c6b319614ba2f2ed67223b972767117769e3c8e31ee4056494628fb2892d3d37afb6ac943b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea000000000000000000000000000000000fd4893addbd58fb1bf30b8e62bef068da386edbab9541d198e8719b2de5beb9223d87387af82e8b55bd521ff3e47e2d000000000000000000000000000000000f3a923b76473d5b5a53501790cb02597bb778bdacb3805a9002b152d22241ad131d0f0d6a260739cbab2c2fe602870e3b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c760000000000000000000000000000000002cb4b24c8aa799fd7cb1e4ab1aab1372113200343d8526ea7bc64dfaf926baf5d90756a40e35617854a2079cd07fba40000000000000000000000000000000003327ca22bd64ebd673cc6d5b02b2a8804d5353c9d251637c4273ad08d581cc0d58da9bea27c37a0b3f4961dbafd276bdd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257c00000000000000000000000000000000024ad70f2b2105ca37112858e84c6f5e3ffd4a8b064522faae1ecba38fabd52a6274cb46b00075deb87472f11f2e67d90000000000000000000000000000000010a502c8b2a68aa30d2cb719273550b9a3c283c35b2e18a01b0b765344ffaaa5cb30a1e3e6ecd3a53ab67658a57876817010b134989c8368c7f831f9dd9f9a890e2c1435681107414f2e8637153bbf6a0000000000000000000000000000000000704cc57c8e0944326ddc7c747d9e7347a7f6918977132eea269f161461eb64066f773352f293a3ac458dc3ccd5026a000000000000000000000000000000001099d3c2bb2d082f2fdcbed013f7ac69e8624f4fcf6dfab3ee9dcf7fbbdb8c49ee79de40e887c0b6828d2496e3a6f76894c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a65905400000000000000000000000000000000130535a29392c77f045ac90e47f2e7b3cffff94494fe605aad345b41043f6663ada8e2e7ecd3d06f3b8854ef92212f43000000000000000000000000000000001699a3cc1f10cd2ed0dc68eb916b4402e4f12bf4746893bf70e26e209e605ea89e3d53e7ac52bd07713d3c8fc671931db3682accc3939283b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746,,,invalid point: point is not on curve 00000000000000000000000000000000075321084f4251d524581318d27b73a8de0b156f502d8f410b3b4529435bf9a14f609da9f63ac8f338fbbdf65ebf270e000000000000000000000000000000001925396f4b5c00ac49765e17c601bd392a8a96d8d5a65e2693093e6d5699610ad699d04e083f8b248c808619d01c33bce9478f1e5d80ad0ed31dc0bd5234bc41957cb74b63ce59654181c13344a5a3ae00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d7d0832bc939e73d01bbb419c98abf35cfd0224f72f6d215de379bad89aedfd65000000000000000000000000000000000d3423a536fe9de27b8da74c6f82fa3fae76945d0c8e50b8de889aa0d533ed1d5b757e918d0eca5b6a8a3b34f9f1de1a000000000000000000000000000000000ae42b8bac10e922cb19169f5d91d50c249e3d81dce761cffb7cd652bde04ca17dcd0ad185fa03b722079b69ad4f4cbc3c2130dfc2b39a0e20abc3f883b4e329496dbb8bc79ea7f30c909140c4b3cd0a000000000000000000000000000000000fdb0c5e83ecf0344a69900d1a59a21bd32f4210bbb0194be6355d18433a5449a81fd2c195e353d844070ed47c88bb500000000000000000000000000000000004c27bb460768252e5d07a952ab5d204e479ff74489933ba64f80ea18799fb937dd6956112872024795eba15f48e60073590f744e04374b92ddc43d0ca3068973b5b48c48a70939fd7d047ede75fb8430000000000000000000000000000000017ff6f3ca925d18ab2afe8c39ac69975769fe0fb6980c3c1c4c678deb01ec4b6e1f5b212a1fd5983e06a372be394c52e00000000000000000000000000000000131e1351e7a7f5fcfb87dffe794934356b36ba49c7d35b99281577ac078c990576a4db6d2be8a45c562a8fc1ec0620e37fd535426244e27c586fe8e87eaae37dfd851601e0a2b001d86f094a63c234f5000000000000000000000000000000000ee908a40185717063897efe710f3f1e929dcd53db503c5e3f0d08bf0c0edf2d68a5958fefd6c0099e9c755dc9407e78000000000000000000000000000000000aa3806ad71189cc119e6d88284d476033386ea4be2f7885d5587e0d991ad88590de58c782ca0bebade6b4b111f3c4ed54e3b4eb4126abb9629e0e5144fdf73716c8654ac8ce827a18f432b5f340e53400000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d9c5fb237ac8e79e271008eab06ddc9ab45ebaba255fae6912577d0cf1428545f00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d0fcca884c7c01ba517c241e44478b35196d441ab3a76b7f023e08100b45d77ff00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7dd7f494e1b8378362ed31b0287c1b5f6912a677abc0fc392234818d4242e0239e00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7dba8eae358d75a3dbff9e62624ef6b1c641a1fc6a31c662f13a39d2fab938b519000000000000000000000000000000000f299ebde6e6c7b4d403b10b04832dfbf65b8ef9bcfebfa5352ee3df4f18e43798a0633845822a44a4fc7ec2ba1d13770000000000000000000000000000000003c886084611cb8c95fdb4473bc00d4877dd3ca10ba40765110400c1200d0b1f4cb9b1433e26d358f78d93da63ede6eea44e84f65a823eda9c7903fd4178c9e734996be8f291949341ff2e3b09ce7605000000000000000000000000000000001812e8d91771d93bef2f087058dd26f0c1ae487de050dcab1510e6ec444473f6815d8dd9565c18e777cfce1c836a4a0b00000000000000000000000000000000041fac4c713ba9727b0d5d539ecd45524285a2c179e7620dab88bad649f1b9b40dd422ab2d40c4945bc27dcb6e0a7a96129a1ee5c960052ac3051e4e663ff4f3c83b039dac18f25d4412a07dd9b164f900000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d5ec8616e3f6fab8a437053de12816f4ca18c1b4d42131c4800904f0c551d8d3a00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d0dc25e17fb0ea75c07be8123108c626000191fb5106f3e1921401acb96dcd710000000000000000000000000000000000f59f9d995d77fa65c22d5d84f277f3ccba50eabb8c404f1f9d70a39cd289b37978bfaceea2b987712507d88fae2a8f3000000000000000000000000000000000a4d6759c576fd8f54a8182a8d1191e5c010e38e33c013603b480cece6dec5cd6892972be8ee1c13500c8a601eee5dd352c4962db75fb059c2fe525270edbe9374add7df7b53f79977c9e51fa5e8952b00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d7cbed522a1daafa00bc82138e08f1318b629d6409bade3d0dbd1431dfa6d60f4000000000000000000000000000000000809adeabe91b3d8173fcfb1ccb80dfb5a5ce48160d915652ff193e6c79eca0b6d9bdcc484a37723db4fcd3c4463ea9f00000000000000000000000000000000130e0fe4001d5995012202bbfa42584ed476ee0decb95122a9ed61364059d5021f8ef232df6276f93ac38cce8d70ffba145ab6abb85976ae17d459441500228e246aa214cd015460aaef6d8e5e02373200000000000000000000000000000000083908343f7329e4e738aa6de69b4f1e275d41243cfb30a6b9e00f032c0459fd005c43efe5a358ef6c0118b1528f3848000000000000000000000000000000000d39c55cf915d530de551ba3bf9aa147fa24f83d51656aeb63866c38b4f206079ac4f89c7f91ae3c37de09d37713f75dd98cf9f26a404e252383a4402c17de293857da5b7b8fabd9f4c59e5bcef4c0eb00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d5a526d3ecc90ba9a2fe62b0673397d4af02440f44551a333fdbca4e2ea6ac0d300000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7de9f0448dd229d025e58f7afb4912ac9878029b29002fb92d4259f815a32916400000000000000000000000000000000005bab5aaedd0f007d0c3e29870e29c93d34f43c26ad57281c03bf273a5e3264fb898059addba45c54a7fbfcecf83e95600000000000000000000000000000000150fb89103ccbd4976372929d3069a0cff886103b8e942e9911f12fd3809003dd5b1aead983c0a3f705b327c73a7aace8e0fc676aeb9d7bb302be47a4efc9e5a6217eb557d6c0d8f37ebe15cd80c170b00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d66539fea2e9ea8285538029a644c759190f21bab23f0e98effbe59b6b4af2c5100000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7dd6683f094390667fff0a92fef389fd9ef0a77280f90f41660bbeda517219e3ef000000000000000000000000000000000a7c61050509b59909bf23a56952fded8adfa4acd2f58b5bbbc0253872dd4d542d27ee23a511de762f21f81c5593ba75000000000000000000000000000000001264e5a654cb3d9ec931f9db10cdd851360958c360e53eea634d6eae8d9922e04e7f87b4cfe99932feff5b3926f6e1efafcce5a813bc622c601c3b4cb300cd413b8b0564793556adf1189e42722ff810000000000000000000000000000000000fa6770b293f6b74109947469ac2becdd55879467c8cbbcd0451805c3202e0b6978e43c421ae07cffba10dc37cafdb3f00000000000000000000000000000000060dfe71eac6b8772bcaa2520d343d56754a7e10368637a506decee4ad549ec43d8c4966b436e0bd2c1e270fc466d3a63ee43425efb56b18114a8fc59a63da39e30b7610d02ec5075cc391db59b875e600000000000000000000000000000000000f6e95654c7f61ba0dd368000312c5ba02feb2074c84bb7790daafb3b6c2a3aab5620d43fe3818d7ad92905992b644000000000000000000000000000000000afe6028eb4c49a8bc331ef714f1e0677d7623e3e36b4b3c451e7253ea6ebe065749e6f2e2bf03718ccb067411e2c7fefc3649d0fd8f7fbdd48ab6f6fd11d5fc593426464c32f09f3515948519d99d7300000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7dd824e57eb10a192bacde897180beb87c5559e6df2512be8df9cf043ad24b1e8c00000000000000000000000000000000119ca5f3fde1801e2cef526cd4e06b1230bb4b7dbeb43d34ba059d9bc394e95fc94d9be60ea972375d66b31c4f0482140000000000000000000000000000000007f10bfcb3ced451329af6fde9e153845fca20c6f5abb30a8ae2543880baf3efe6b31b3e7001700332bfc3e1616738b7a8a514daaaf533057c54b86200a1f8d5cbdacf8e3c2d9eaa921250b6387f45a100000000000000000000000000000000180ea28fad486a20615b934640aa883e70ee60c47c6148796691c58c64d03cb80b3802256756ef9217473837bd7bccc0000000000000000000000000000000000977ddcea657c79715e6d4ae801ab6e63a7c2688c0852e229b503dc951bc9611f36a858450614204ec44472914435643604cad22d4e29aab314523cdc14b691e509f260423d28e6f176eee3b659a164100000000000000000000000000000000195c0894c937d13b865ebbd935e4c609eafd492d57115df5f14df86b3381f7f9a111a2122d79d80980ad201c138464f5000000000000000000000000000000000471746c7c57fa94c23cd5978db9c638cca6617d27c445cda89f8298c4cb998317b8bca49f4de36e1e0ce24947021dbf7b1893649115755749a9f858ffd8484d7dbcb04bd2a3ff91a3fba86fb44ab69c00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7db7930da64294e5949772522fa980479cd419f5014412f53a082e2b35f537ac0800000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d61abf3d5e8d8df951747925b485dfd8cbdbba2fac2ef5f72a6311f79e89d406e00000000000000000000000000000000056f92baa9ef5e1e434fb70193f924706489968123ed61b8c9938c695852ef681709553c56d979f0925bdf1a8390a8d6000000000000000000000000000000000841faa9c8e27b1e94f2a5c14988806d62d7f35de74ba9a7db0062dd444a19b1a893ef6ee2d1ebefe3631d0ee0fcbca35be3179cb22c10450325b3609d9c3366c5200c1936280b3df162c48a213dce68000000000000000000000000000000000a2398e644fb52d53f02a583e67b11e5c7ac5b8e18e96498b9bbe572c3afd4dba8cd978db48501f5cc525e6c13ce92000000000000000000000000000000000017122a21cc3b7551a787fe260c1ed80ea34bec22d3ebb67b86dd0f2f95f50db7f577732c0d0e020e1ebb4295ba9a9d2a17ca658cbd9f48739b0076f97e4b943276f558760ac051f5c67159ad83bc94410000000000000000000000000000000018b172391adc5b6c44edc54c2bd874a01554be69d848b317fe845e62282d82440ad48c4bb645553bc75a701929aa9de0000000000000000000000000000000000753f19cae676565e45b13141d12fbefdebf6ea7bff7da94ace2af135e1aa38a7d63736de76bbea093251eed8755d6e3c3c4edae42b946fe140e511563d1ffb612a0d4fff66941f66007d0ac33c547840000000000000000000000000000000015916c0f96897e0e2b43bd76a98608d0afc276c1764f458f83db94fcf13adb05f440df55f3773bb12a3c25549e57d09d0000000000000000000000000000000016c6bdf76469f51e0b5dc0f9f2b22fe552e0fd0bd7084cf92946fc4d05692ab32690196a408a87681e32237cf172f5eecd8945187d434ffede5a94aeb3fe3442aba582787eca04c0e17d640820a30399000000000000000000000000000000000ca63266caaa56c1ceb84c922afd869885a1f33512fe59e1b367fe3526d1cf47f96df769d2f7708e1b693b528a28c94100000000000000000000000000000000027dcd246ff92089013faa40b4211e0bd0fa5777457668e57c0142561847542308a51d192ac5bf603ad8aa5119c6a5bc0ccbb0d0ed90f9bf2b75879861eb24b1170c9a83f5cc479beb4cb1e8835e77f2000000000000000000000000000000000d91133d005482f27cadbf8eb2d4a90952cee2d8b4b5a49dcd79a8141bd3cc04d4721fb3e62da217a08bee294a879ef50000000000000000000000000000000003bbd0c8be4f936ce1fa7b48f9158405e52a819cc1d4bb1fbd9f309698f8cdc1b2e1a5554eba3ab8d2e92f191274ac8cfe435dd14091302d34191d6c5028c3e62ad016f5a5b6256f3aaf82e9606f21cd00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7dabd30cf71788f338622c21204603041353f1ca6885660be7ea826e00321c262000000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7ddebd81c66b87038940c72fac5d33aaa039525bfd21c79af3e4ef46ac5e1b274500000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d6b382e8936d65c5c6ec4a52a5e22d923ba82072682220a6a30426319584fad480000000000000000000000000000000009edfbf4cad38d597d63663abd67d6a84b5c54dad7b7b147d791c41f9316923859e6daed7e384d9049b0a2203f08607600000000000000000000000000000000168806179a9bcb0bebd363fed37a5b9cc1e8b66d270982c31ea5573b78236f75d36b04efcd2092d7684a18c13de83c512bb927549b1b512c6e6cbe1038bed00f074deda5c63a2367ffc60c5ce7b8afc500000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7dfcfb7d1fdd47912832e10e1f30ec146c120fc68ade3f3ac10604ce548847a83300000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d1fc561e062ab6a6b015fda81de63bdcff89698bd2a7445d0c21c1b8284d8ebdd00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d385829683b3cce18867d07afe8c02723f906a216c7d6d59d5b42518f5999158d00000000000000000000000000000000032d01e694621f0d2821bd2a575424d11cb623e65c1bc2438392ea57f08936e9b98eceedf917f4e51afbdd30dc8c24ef0000000000000000000000000000000010d8d9f87a3c2689ea9ac9afea38a0b1b31d90f0afa71957b596cb89a9bdd414dc2954f1cc747fac377d318769467dedc7839d6bb24f8d23caddf1b6f0895a5a6432fa0843cb313c5ac57e81ff816c6f0000000000000000000000000000000015ccd632042331ff5ea5fd21697810f7c3cfe5eb1d6e7afd9f850e3fd8e5914bce3d548cea90a60ab0ed27e24e72464f0000000000000000000000000000000001d027a23c9de769d155f06b81469ad9d3ea59a93d40388215c2b5c7438fa10e77da03e26f1010dc7a225d179b9298f9852544eb6963fd0dfbede6d8cad90517c2c3dad1ee2f6c49d24d8dd155ac977000000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d5f94eaaa4947d5d054b54792044ca1450f25da28df35db7e61b7d9efe55debac0000000000000000000000000000000015163cbe70b4f6a2d7d90a8e48ac6f8812dfc7c997add0528f17a6f0cf42faaee56b13e1e95d5b8f306696a41f426c49000000000000000000000000000000000f55f240ced8ad609c288edc4b2a888b84b101aa39473c3353163b501cd888e07d42138e5e450f16d4e1ec0414b5d28f3bdf0bb67b4d2551ea7144121412d258383ed6cb4abb93b7b56b127dd384296c0000000000000000000000000000000011db7b6d983443206e5a7962bf7e2113ae463531cc958e84296c96d0c31f4f2264c8392bfb85f164500d6b872e7890340000000000000000000000000000000008d396e251da387cea196f5b7486788b3c03240451ad437b2d306f3b6ecc6cabd7e2f4111f7321b64022d2aad51fda460aef6a4bfefd1af38ae88ca70324b583e2aaebf559301d7505db962ebae2311400000000000000000000000000000000002b319cf695dec2b8da3475991a774e1c1b01421b0ebfd11297673e0eb218448c4271e67d23bd0ee5be867126091a440000000000000000000000000000000008549085ae48aedb3c8a4bcd271a9da39fb74f528af94e588c8a0a6a2e76026f2711aac32601e944d9547876ed23de7e1a85351cd8c1e3175722cbd8f6aa3806e0d9361f09e70dd03771b6b26d2f93de00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d6fcd55de20c3131edb3e85f6aa82f17c5fe5b93f92fa3fd596c833549824ede500000000000000000000000000000000142095eaf85b1017dc314db46100baeb29170a35f429d1563cd7aa6714f6b1dd269ba00be1a82294b0a508f7f038e0d4000000000000000000000000000000001558399b27afcccfa6a89cfd4635a4bd8c87d7ebbb25c28649f24f90897d7fa54c207986dd854f156be69a6eda586aab431309767397001e1e32bd73f685b5f54076732c953974b446a3088f54c9e3240000000000000000000000000000000019ea6e73637995387e7c2cc1a0de3d34953242a8dd3139d8a5886863cf21249e8716a8394f4883a2af632abdd15998a60000000000000000000000000000000010c0c216f747d186300934461ed363744aa30be9e0dbb390d362cd3c71b59728b124a396c6e186ea63aaaeb4d2a454d7d92679e9ce2106708d5206d408ac3650d2046a51eb79eca4dba9416ef0f3527200000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7dfa01f7cf41925a6bbe60b14586586fe0d4ba146c5aa6f02c14d41cd791878554000000000000000000000000000000000e7a795c2e6d4ac210d0fb92e94cd76ff97193ef7bd79446afafa7185df8959389801ac16f846360c8509bd407d28da40000000000000000000000000000000013e260782a41a63ce7c4048109fae191aeb7448fceb79e06c37223de72ded540931ba81ecdcb46423bdc7d564d27ee0aa5138547028a8868888087c4abb44f421757cb5583a6eba82b58504655162463000000000000000000000000000000000ca32c6c4b8746170ef22461dca8893855af15fdabb27a293d2620a20088f3892018e3c10dcf80f67f5227b14a808fb90000000000000000000000000000000001e88d80946624429dfb26f20236fe03680a359f1522a9075d48f27c84de9008bb558a645192bded688197e55b29c1cb5444536040fd8d54b8497d86600a5ed467a4207dead453c71781ce03552fc18500000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d49e2561d0364b0069838bf24bd021d1e4a95cb0bd5aa7a94a506189f4f5ce5b000000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7dcd2d6f115ac393d6d5733cd0f6e6d3f0231cd825bf899902c50c917d0a56aff000000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d59d2bd9bc3e12e5d50c9e4c768c2f8c65ce771a11cfbe46da73d80786e027b58000000000000000000000000000000000fdbd45fd634a2f233ff8ef90d5947977023d9ddfa69f3ce6b1dc6abb17bcdcbe97bc4be5059bfd2ab1aa91d17821024000000000000000000000000000000001435c723d4563d17a9c12090347929487409efb3d29119ccc967a6c5e9cc00e20e537a3e05e385cd8efa555dd3f2b722ff0a56d2dcabac5932c5d959f2f036d9ba5c71cffb7e686d319bdc8d1e83093f000000000000000000000000000000000be1163dbc97bc79f8434c744dc0e2c638c9d524903738ebea3cb86b79438ea2fb0238451da6e962b412be9a0e7611f800000000000000000000000000000000022a59b0eb1ca7d35ae94bcdc64f50b443260f8cf7c8003d99c3ae198a7c2fcbee4653566b485f33357d8eb1a6db1511f7adbee3c265263c30e3662a1bd35fdb466bb3677d6d09efe99cd1a7a468548300000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d6448a9f68973305afe0622c12998037252fc8183296ebd0f29456159b8275e03000000000000000000000000000000001947d6e595915bd7ae4e538306d208a2d312de5de42f0d3bb735916aa741f47ba44834b3965f2aa9b5405c10c2b6b992000000000000000000000000000000000eabf37c5ebf82bf038d3eb58b72a5a584d69ce3e7de1d9668ab5df2abda5797e567321ee43d1aaa15f057048567f7c6f94018c9aa0307288e5126c736b8bc6f270836028ff850de60261bff338b7d7d00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d7037d0654ed51af22b5b324e23ca1065dd8cd3408a675ec204cecdfe687bcd8a0000000000000000000000000000000005d727a52fe6676e8508bd7d3a27c79cc4836d412cd5720063ea0ce5ca245cdc6dbd6fdaa26ff502d3ccc6e27701395e000000000000000000000000000000000ffa9dc48cbbf1ba32bf5de2ad98e8f4f1842f1e219660c00ef9702a72aa1166d46b9731b8c80581a795c0a09693cbeea5616463a00009079c228b8a92059926e3e26170c7bf1514823eaa8bc0e6ffa5000000000000000000000000000000001220a1e08ceb679bb165a3c9be882b6429c36ab83a7324ddc07ef7f2d0a4408d741e84791a33775ad4565cf816a4e9b70000000000000000000000000000000001496ad90c53c27392ee8849601aaa5b2c89700112a324864472c1a8d49804fde78e761adfd9c7755ac2d8d7d215c0b53c1cd4a2a7ab5eca1ddcda8887fb2aef01cb454a97bd39f2e0680915be270b970000000000000000000000000000000012b40bf0cbdc9e374ac4162b638403109a79803a726509f9326b85d3f2b20dd2a09015c30a2bcb1156bf7bb888f010c0000000000000000000000000000000000f3bb973815c39b95fb1398d80ebf1530060e31495a96c736b0235c78c5e041ff69e2564746b07d7a270bd45258e4aa7627af6cb2e8a90102e79d2cb19aaf0b6c18dedfdc736894732c7403036f0324600000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7db4371b02a3681f7f8f53acf22cbf8307d6e5276a5a23ec74fe02cc7aad62e98200000000000000000000000000000000007c2f86b037c3a7b67995d96bf4313ab6c20f472994372b40b78a3dfdba4c7616ead79026738d0ec398364806a57189000000000000000000000000000000000e752c8490fa323e0c74f9ffdffcc9ada27016388144bc95445341a6eaa82fa9a10d59c11bd8dce3b9cb0489ab1a5447ddb739a79265fb03de61859590978af384fd44243aa33806a1c7a3e20f37365500000000000000000000000000000000048afef5dd0565942320a985cf8d555408cae3edc40b7a5456ec86308d5f11db5592fe37e058dc6bed42346b42fc4abe0000000000000000000000000000000005e36fcbaf73026442a94ffeb56f4d05df46b90e3e02c3fbcbe3a32b1878edc7f6a5e57dd9f6ba64097c41e8e7ddaefe24584b142d6180187bc728ed22bf802d01db715ff85b51872991e92ff1d70f500000000000000000000000000000000008e3fe3d42e724fafb0501e4d8f2c55ec35bf60c71f6bd31f3d4b890a0b418e00509b8666af4207c8db44b30dc3828b900000000000000000000000000000000122a0dd7a24cf1e42ac8b8795ba785efd1f03f4753985f4071f17c4b8be7706fda8f900364c1676bef4e20e5797583b129566ac3f767fdce83ea91a295d06984d48763136f977f5e7e4f013ce274923400000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d92af1ecbc9eccb56b3a220398ad3a3885cdfd3f02c9d302add64359bd121cc3e000000000000000000000000000000000e7775462ebb7f1ed737ab730e39ef8bd089222d3d7b4ab904e3583f898739d6a53c1d359d11017892eebe6ed9917253000000000000000000000000000000000d239831ce4acc58fa97e4d4cf56c3961ef313b681ebb9a1e221900e55832989efd1b022d9ec807019dddf73b1a6fdb2a407193f74d08ba9ed5d971f0516e7bbc7f89309dec24a4ea5d2a1f3eccfa5c6000000000000000000000000000000000c5be42126df5197c04f49e618a3fb6b8ff17f90b5ff26db7fd508a0723c4f479645beee629e02c9da60313b19bbfcec000000000000000000000000000000000e7fb0e4699dbc768d51247f5d7030fc698c5875cc9c5b326f3f7a4315c6fdc8e5095e91413dbd2c9b40316645275b3cd8fde96110b12c91bb5a9df196e4ca3c169710a6951e4dafcc2803fea31a43d00000000000000000000000000000000004760b7d9e28a23216b7ad3ac6b95c094e823df1bb05559e1871d9598287ef2f48f2858a1929fabb7ed3d7372a8bc7e6000000000000000000000000000000000f766efb67b69b273f9e1ee0c1f934231072719039e642892623f869b05c3b7af0b18397e76a25cd9f3eefb4f04935a54d02b624a8c2cca31a05cdeda3e09ad819140fec582a88f266291ee6aa1f1ce6000000000000000000000000000000000f734e6b273c6b05e911a4441c3740d13228917fd0916dfcc696930ed1c2e70268ab98d764507e68fd52826bdddd64e2000000000000000000000000000000000c20234fa85fd9eed8b148e79aa833443d47384590788f0700ccdc163b5d50dfaf5fbb901e7802d27a3db86f6aac06e91977c7a5be2688c808528d63a275fa8d18af14d7e90aba7edabfc821f4ea37be0000000000000000000000000000000016f5c2679ac1a70cfeddf38068bb85b6d35de903105a14b3c4b3d00e6f57c8b6c6de7d55f2b697617a4aeb73cbcffc090000000000000000000000000000000014ebec9ccb8e6052a009255080f2e0bc34eff9214e911bd6c4eedb53022a6defd5f0e78c9713c6a2e1f110152ad65b941a5267d9766e7d84ed4693f15ead057ef7396903e8a5f3a55bae74f044368a6300000000000000000000000000000000189b31702e6d365104d661c9c524b2c8d42dff369366d125453496e434f1b9c4f46cf3923afd14b50a4e06e4f73b5f8e0000000000000000000000000000000009eadd06f6cf208c4c70fe079cec8191553cc8a55321ff0a70f818d1cf7b5838292ba5eae5298f9b842577a7cb0ddb4e89246920765fec2a411849831114d529aa308111efdc119e85186b960ea5456600000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7dc088cc74c109957af3548bea8f72505c8ece5c1b690c14dfe958b8faea470aa1000000000000000000000000000000000334aab374f69a9760f58431c6dfa783f71908bb3249f03d05272fcc6b5548dead4791e86d630231133c121ffc10795d0000000000000000000000000000000013b4f68ca1144b9b2723930cf63c5b75fbe7a09997ad6916b933c5713e5c52e918e4a0876e5a3fa282a87335d9c1cf4d6e33049a1bb4429d216991c6aaec7a6601723e52aaeb4fe9dae31b5d3816e93300000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d44f89ffaa24457b265e18cd544a4107dcb6f3d7f3fd39842a3a6f40cb80ef8b800000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d39a1a26daf737fedd3f00aa08e7c55933b70060321ff2d862df8d3f2216433be00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d792f9741bbc394770f02b271ac249e66e056b225118afb58e804ba6a64d69fab00000000000000000000000000000000026ef7ed98b77106cc9e97e418086f844f2fa5db62484336750db6b140101657350dd20a29036f31b3b61a0a6292f1720000000000000000000000000000000007253b6377638195eaf42daaaabc451ac78e0707f14b12523ba5cfbf5ecb146b8fe1361cfdaf76b7b7395fb4b2ec7733fa4e4476364dad37551ac06e221cfb959094aae57733ae80c00d2213a68a841c0000000000000000000000000000000010213a60637cee478d92dc83b85937f51be6878189ec58c491959206024a726045906c47f39c89c68e8109ac8a09124c000000000000000000000000000000000a915b174003ba76da253296fad341af125a7b0d30e541c92cd25c970fb5d45993c516124b8535024c74d970f12fd7c1ced1ad2563403e274800e80f48fecac97498e58356f33ef6fb3ab123ce15f5d700000000000000000000000000000000149451bc330ffe029b198feb8d796fde5341b0691d0ea058d9a29ae1de78740e3906fd8cbcfc135caed16c03ec8b0fb500000000000000000000000000000000147a09c04d930602218988f7a101cb0572e8a41f83c49bfa6b92217d62a7b817146876b8de99f984cdff2f1509762580bb49d60ebba706d3556aa7ada87267ee3220b7f0b8d333aab79d690feba308710000000000000000000000000000000010d8cd8f975822ed51b18ed332fa6b695e0ab0c884413da5a1f77f0a472e06a257323aae9a3a8233dde0f3e1a797dd6a000000000000000000000000000000000f2b776ac6bbb05bd2d18148df50f3cf9ba3bddbc6ea410a537a65e0bf12ced5dfb8fd9a1586289bf9ae79889102d1f9a8d81a8d537651685cad896598a65479445bcab815793de88f399a7e2989c2e400000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7ddd130785a081c481879877abfa85e66b3b39cf81451696e7fe7524755d5bb0ca0000000000000000000000000000000019fc82c97989866d4e50f03c018dda0c6b356851d014355862a243ac1e2201ae248407ea895ea051a87249518eeeef66000000000000000000000000000000000d7c34b2070466e3107979f43191c09bc5e70ae6523fcefaa5227d04eb6e51de5d9025df74e2056e5e976a60a8b8b612f96d861e2c9a2b8b47f7c6f6f6c63ca93eb83bf5d1995006a7c5f03c2fc25d2b000000000000000000000000000000000928e3c3be2939c1da0a388eb4b55a436a698827c7979d34ec6a0ad3ffb9e23f112350c0b8174f1e52b2c53a8de4649100000000000000000000000000000000123a719f66a3f2dcc8ec1b3f130dcaf9b4e1e9124ae6807c744417ee04dc7464bbf1bd7f6076257753061334332e7192eb64c8c2bdbcc472ed8079a295888c1ee902c948ae48d2149d37815537aa538e000000000000000000000000000000000ebc060619caa0db6ea4c47bad6610802128d2be619173223a9d0f84d901f147db4fdeb250249759487bc727ac061c66000000000000000000000000000000000c44ce1e0c8b3f4e2098aaf2efe85cbfb689fe5478641ae53cd5805924ded81d586644c3bc49a389b15d837e2d4fe44a39f9d35b3f3b4037baa3bb79f7d5e522b9c1acd434fdaac61c3f616016b3bd5d00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d91b623b6ee1adbe3728463c29c39379a29809cfd7cd0027835a271a7436f470300000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d4e2e68c5c52d84b713d3f681fe6d06fff398c110215895ebf9deef50b2a338d3000000000000000000000000000000000cd89c9fe1298920067f1b37be297c5567137a07a95c56dadb2c04f3993608ea498e89b684b8262172a1081505d5c60600000000000000000000000000000000073204f3cbeb83a5189fe1df5f501241e2453afa3220c38776590862681a771cd5d6cef2946228c1416eb3c1d840bcca8e2be1afacb2acc764b129c6c62c2c35801b548f424c4bd3717f6302a44b15b000000000000000000000000000000000177d5d25fddee9f1923b4ae21ae91ddbc4e55a22af46eb61b35e0634f7ec15a7d8bd6ca12be9fde52561d207d26406330000000000000000000000000000000011e9fc830a8865caf50c1c20853f38039c3b0aa956a75140ed699cd0e69730c6f7bdd00fe05529cedde1785a39f67d3f60cb52da68c43935c22b6d1b13b3c32b79f8939ffaacfb4938bb1747e3d31f4900000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d91181d5d2444d162419133835091288d910bdc603f405c6120679fae82b6e842000000000000000000000000000000001689b5ec4737d58921a131707b92fb7c5b16e084a0415bc5c1bdb5b9a6260327526da2801932b5775f27cad390e6a6980000000000000000000000000000000004b610f2c453e9cc73f04425487f65660f478eed19ed3f3e60aab068f53f2dfdb5a73b02e525a14afe7423f8850ee9fabd637ad431366f08e955799c79f6ea5aaf9c22faf5400e7dc6c249c0e6494c1f000000000000000000000000000000000c37eec1f1033b86368b0fe1e42d9feaf174a77c4a455aeccda479d8fc937faa3a521afc7a2143285e7496f192670242000000000000000000000000000000000ede805910da61cc6daf7b4d465ee83ddf1ab5097634933a70003112a20361cd9c59bfa77b1bc026e93ba6bcfedded5b6ac13b151ae86bfc484c2bc91d4df9a75ef4a2523b968fd31391f9dd0af789f400000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d6fb50ae4f785f5b5cfdd9aa004f08215d1bb6c1214d5cc5f027c3bc28a812414000000000000000000000000000000001259021c75f2fa3278b16ffaf375146d0ffac5477347ed1641886f703005940cede0bfab44fe49ba20914d580161326f000000000000000000000000000000001029ca636af85218a2a23d4e0b799dfeb713718a258c13df2731c4f352c5629a4d2b996d9b2b3c7adb73ef0a28217ae0042c2d53c35f3fd0005a977237d71ec6da2723a7c9187f1b9f9c86a5d77dc773000000000000000000000000000000000f719b8ee0f2d3c845323b1d4b5df26a6c118f705f62b5cc535ad3a9dfcda6ecee37a0a9cabc52dfcbdee23ee4fa76d3000000000000000000000000000000001550b4ca2ce312e81b6050f7cbb6934f05830c739d3ec8b84cf1f349fd740b13cdcea3f2939bac45bbc71317ee0a3c11cff78aca784067502defb619fce8c8ca407761d3fa78d635b21afed38aefa13000000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d8bd0c10194e4c8a032574824ab15979cd7fd2014dd7fda706b86d37a24a38990000000000000000000000000000000000d72f3900402e43a50414d8aba5dabe6a4ed9a2ce4df7f18018ed3292da6ce11f32d336cafe428a867dc3f75af7e625e0000000000000000000000000000000015c68638b97c79004b2bcabbbc309884bb4429fb7a947db7c0aa54a941574475b164151619c9bf5046a644391842cfd183158c0345a5f28d1577e3d9dc463b8a355602d25577e328ea82f987983e805100000000000000000000000000000000004eb67438c54c72fc064a92653c60b36d93dc4578b251dfd9fef885fbb71e7e17ce48cc286d364a9403125a285714ba000000000000000000000000000000001711f593ed6016095a9d01a7bf1081a2e279e837a35d250153ffc6a12bf2dce0c9819e5d0cedd8b20bae73414538b61aa03169e13ad2198817b924f5bc1df0f1db63f14df64d1ae24b1c43f18eb78e010000000000000000000000000000000016b3e588f20cb6b4fcfc37a53f57b4b446abc8d56314031db09996769e79ea63cf54549f0bd367545e4d17d5b55a300a0000000000000000000000000000000016feb1a66fbc5cbe44fc73e43735063100d1d5b28cb56a46c5c932111c08c4769fdea4a0a76caac26347148f50355aa0aa98c3852a24f571693d36ba7db3ffd984010e4084738f0b8b60fc7b6ac4b9de000000000000000000000000000000000ed8b7e1b18a4da705a76d23df1623052f99741485af9ddc9f501d6bb09d04356dcdd02e78bbfd8384c51b4156d0709200000000000000000000000000000000116ed2039d4a23fd7bdc56506bd4109509c6c189251ec9014cf9f9023ee810e254539c83f18bb7642a1dc6b41bf809c7f93ec9381604290d5311aa3fb14d124f0ba65df55f6ef3ec4a269edd870ff84900000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d3f6f400d9cc7bc131fe4e5549b6ab7d82436bf68b504b970ff712ca4c9c2c97d0000000000000000000000000000000006e236535f811c96ff3f9c072eb9cf5f87c45cba5c7574359fdc6000c40693080e7f61867cd5a3c4a65ee9c3d54a6e03000000000000000000000000000000000738e9c888e7bb7d997c4f981c492fd3a4766e4d4c585b7a03779b249331ac014697c89bc21be212ac499fd6ce0b35969e06051cedf33e1f3ad21f763979ffa200c056792ffc8da1b6f44af6eb227248000000000000000000000000000000000af956bfa4d9b6608adf999c46c2c992f8a3eb697692ea3ee630764b855ff44b350ea6de10a3e5e1f271cac23b235fe800000000000000000000000000000000140bd10fc8fd2e934494c9f7b00fe56028ce31d97345ef9b8b31ce6d297cec92c7d4507b3a6fee0ca39dbc9d451143c61e44b07f50d5e8d1a05c82ac2a481ac5e8aa7822db692a1a3fdea6a0506ad93d0000000000000000000000000000000014f9f27a2cf656c4ed0f94d7c3aee20dc0bc821921bfb045f5b68ed83bf0c7d00a986ea7c45d8d705ecbde13597b0e63000000000000000000000000000000000db7075ecc834f4959cdb7e188fafb405960dbee697a82746f478db752751f450d2ff3bba389104e5b285ae61bdc0c8aad55c357b7f2e245173617f50e12c9e28cabd7b5d4698083b5494bb06ee6b94f000000000000000000000000000000000f3d8fa3abc111f80330ce55ae9318b6fec02b352e6d1d255449eaadd7cb073e98c3c0d8eb927c123e1291e4fe3fd21a0000000000000000000000000000000007444b25c17970b80480504eec11391f135bf9a817c39a17490474401bae058b276da0a3e40524aaa202d20ad9371923f67af135d05146e92f729e3176fdd93e17f5c94fcabc5ea6d93ec2872ba9202200000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7dc430190b829e32a784e3024f0a8724f62d4184898b422e1eaa6a6682a8ffa5ed000000000000000000000000000000000933768ebdc9e9a441da03b7b9a256ad6feb63944389641df09c6a17b73032329246f1d0d6bda314fd240c5edcf763f4000000000000000000000000000000000e27fb7f7d159ec8a2936877c69de1018ef076da27682bf900b67ef6fe042bc4f89d8c209d93f49cf8261350f8e3fa5368baff019bf1f9b24e32cce1bb680db6983d6f2b2e60addfa31d5ad9475238aa00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d494507004a8ae79912a11252b4b2db7e498b534e338450981ced313193d9687c000000000000000000000000000000001197c02653a12f6af36025306b69c89df784bb7894d505621f05d7f1f6a69e852508df91e3d8a370f4e8cc48ab02d1740000000000000000000000000000000004dc5b0344470d1d4f41aa663b33cbbc1c679ff7a30dfe96f99514e9d99b94d7119ec7e93aef68bee8ff883401e7191036da67891846eab25aaa711c5d03b89f0a5377bcf5470bc4ecb1434e6d7fdad400000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7dedace0762debb30741de59f071e6ee17f2d7ab3d390b1c9eb2128326204c6ac3000000000000000000000000000000001579c41346af232eb0717e393790cabff843cd6c50fbb378900009506ea2aa44c9bda06ac22508fd90dd4b1812c5791100000000000000000000000000000000034c6e25a58fbac1a5e023a5f8a820eef2539c8ef3f0dc9b3d9e05044f72eed9cce1957257364dbe961a2368f6f4a2fba1d68cffa664b8a4fc6612f5088c2206666218627b5a3d8cdab267ba61b6e94a000000000000000000000000000000000f6d092d1eafb6707da09d754ebe75c036b634ab71d45c05b02d087eaf9a4653c44cebfea4b6077a7d27c136861745fa00000000000000000000000000000000073be5a3badb56736b4fc10f1da61a512cb01b9938f613c24c3d3f3bf92311fc96b112c729e4c15edcf5929c88d459a61375f570e38bcaaee664681e407e7f987c82053420837154cb5a6728e0ef94b800000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7dcbd879144a71eb72e27370ccfe3a7838e7ccd0d1a3736363d4db8bc93b8823b60000000000000000000000000000000008b35839caed21e951fe50de3cb5a2c1b1666facfc98416258f142b3b60ceacb20bb0d08e3ef36f9d4f5de717412a2bb00000000000000000000000000000000199763b4f8dd148df64a832e2f23565a715a4587c5cf43fc4a9275952ca7d4a7697e395f130424e97f1f86cbfa961be5e666b68b60b59b28fc886334ee9dd129522d30b920bab308529666cf8ff0d76d00000000000000000000000000000000182c820bcb67b1498243b455e29c1334e4a3a59eb6abf2933d8ec05df470bd8e7ee8d332a209f1202290739623aa26f6000000000000000000000000000000000384ad81bda50856eed135161899d096fbebacf59a0d02e7a87366ed0f096e3bbd1eb4fa3281fb8413259a7d2deb162ff6b2722416947db59e49f3b1b7160356e36ebb1963b41ccbda7ea93b62ca483b00000000000000000000000000000000001b26cc520f5c5d0ebac51d8a24106c2da9131df1c53c6b36b81b2cccacf3ee81b55292c06cde3008225d0f8a69d8db00000000000000000000000000000000126cd4e992718f3b1b366b1ee4459a16bac8ed2a814ae9445c30640efefbc7cc01c3d1fa1dcfe2a7c727fb869f46e1b99c567427455c4304a89fbd4fbdeec02d5b1cbfe0404bedd35114252f94b82a6d00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7ddf33607ac4386eda9cbe7a68908739c910922eba2b1cd119e794da621196d3aa00000000000000000000000000000000115c394d97c1aa29dfc3c5c42700dddfd435d30d753ebeb8db7e59c9ee129f8fbd87486f476940c958f127ecb166c7f90000000000000000000000000000000018aa9556e962f8af9d5c4db3e10a1f6c9603345a5e155944702904faf70d972553c0ce6b58df3886ad4de85069fc559b317185cfb9f04c5566bca6bc7dc2043ae8744971331180df35320710e25b404d00000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d4e2e31f85a0c9145eae006fb7a37c31d8455ab1819d22ed08633b61826a110f2000000000000000000000000000000000b3c0cdb73a3f823d61c88327100dca8f06dcc5b275178a9fb4c7833adbdf5a6b531e8a20bae515a27542f4c8327832100000000000000000000000000000000110efd582f71bffc5866731c388ee69d793060d254a2b35dd35a1a5894511aa1c5fd58b20335921f4756e192f78fd24d618405deb577678c50402b1ab3054f9d74079022abe527279f459da7e464815700000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d67d8a868ae890084858f063477cf8f8e2463415841530281cb2ee435042ff86400000000000000000000000000000000153753f25d38c68a3b92a486bb896a1b6ca9d4b81620a7a0040386838be7187e8ca73987bb260ee099793009b5cce1f500000000000000000000000000000000063f22c3bedc7ca5ce16db22f44a68a8fa529b2c6aab59c97e4b2353ed1b81da0586dbc0fa49605402da10c5ff7cad7d362802543485898cfa1f4e16eec307f6f0d2a0a49755573abefc8805ebf05d61,0x00000000000000000000000000000000198b43bd45d1858e93b542d86515454ac355d15448f3686d53346a73125bc3f356bc458fb1a2039f79bd27802bcfac1100000000000000000000000000000000180dd0333f06df2ca759049c18dee700ffac00c28006813df050d775219fd2ceaeaf971f57268c8d400e55a975723311,269352, -000000000000000000000000000000000123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000000000000000000000000000000193fb7cedb32b2c3adc06ec11a96bc0d661869316f5e4a577a9f7c179593987beb4fb2ee424dbb2f5dd891e228b46c4a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000112b98340eee2777cc3c14163dea3ec97977ac3dc5c70da32e6e87578f44912e902ccef9efe28d4a78b8999dfbca942600000000000000000000000000000000186b28d92356c4dfec4b5201ad099dbdede3781f8998ddf929b4cd7756192185ca7b8f4ef7088f813270ac3d48868a210000000000000000000000000000000000000000000000000000000000000002,,,Point is not in the expected subgroup \ No newline at end of file +000000000000000000000000000000000123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef00000000000000000000000000000000193fb7cedb32b2c3adc06ec11a96bc0d661869316f5e4a577a9f7c179593987beb4fb2ee424dbb2f5dd891e228b46c4a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000112b98340eee2777cc3c14163dea3ec97977ac3dc5c70da32e6e87578f44912e902ccef9efe28d4a78b8999dfbca942600000000000000000000000000000000186b28d92356c4dfec4b5201ad099dbdede3781f8998ddf929b4cd7756192185ca7b8f4ef7088f813270ac3d48868a210000000000000000000000000000000000000000000000000000000000000002,,,invalid point: subgroup check failed diff --git a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g2_add.csv b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g2_add.csv index f65c176905e1..3eb44926840d 100644 --- a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g2_add.csv +++ b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g2_add.csv @@ -101,5 +101,5 @@ input,result,gas,notes 0000000000000000000000000000000010d001a09cf5dc3276482185f26ef3f75d28cd6d2667eb08a7fe06c03b99f3b6c4d82390739b6867a314291cc642a8b2000000000000000000000000000000000587846a460b1f37c2e7f491f9a097b4e86e1943d9cd0999313f65627b3907f09b5d5ac1be376a313a959dd136f7e9b3000000000000000000000000000000000af439695556e86b102926d3b40e3e54cc84464e120de3b4e3c5541a6a5bca44151fb0594009663764c1824518b13f020000000000000000000000000000000003bfd9418c1e57269e222152d321b83ae090f216cb422956dd1fcc464f68526cb4a05cdaefc7bbe6e81d4ffe27d64db400000000000000000000000000000000085dd8bfc00ba517dc8d7ddb49d711d35bd36f9fe3843689019e779624a032d2f023533b8184b73042d1a1953d2885e50000000000000000000000000000000009ba8d5d36e6efe02097a3206bbed68529f0cb9875ab81deafd886d9243bfec8b403d2abe713a2ec929b93305dd2da220000000000000000000000000000000007f8f90ebb2771136a92023901ca85e87fb7c8b1a40f88ae564a124bdd0ff0bc27ea98612a817e2c871fb4bcea3bb06600000000000000000000000000000000152de417d02f1d14e5899201db8fd5db8ecb40ea8d415dcdedce8ac70c28d851db68e9aef94506a50ec28145547a2d68,0000000000000000000000000000000017555399f979745302f08210de5311a6401b6b181100b3bc6b6d450f0f62079d2f02d7badcb164f50dfc46a975cbd6720000000000000000000000000000000014aea86c06e4c1fbf0711a8cfced2544c7624abc7ae7906cd992bdf575a702540c45c2117e221446ba09960cbc9048ac0000000000000000000000000000000002fac56960c4989a84e02ce36e8970c2e847ee45579d31ca77f042bf96505af574af822da084ae64b22ff876610ba9a5000000000000000000000000000000000a481cfea2aef8975c80a297ce5a185dacd25649d41f8466d3c63d786e3c264a8e4ccab5ef6b80ab1260e86ab6d5b3f3,800, 000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220e0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2df0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1d9f0000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,,invalid input parameters, invalid input length for G2 addition 0000000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220e0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2df0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1d9f0000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,,invalid input parameters, invalid input length for G2 addition -00000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220f0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2df0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1d9f0000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,,invalid input parameters, Point 0 is not on curve -00000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220e0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2df0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1da00000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,,invalid input parameters, Point 1 is not on curve +00000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220f0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2df0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1d9f0000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,,invalid point: point is not on curve +00000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220e0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2df0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1da00000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,,invalid point: point is not on curve diff --git a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g2_mul.csv b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g2_mul.csv index e8863e7ee483..7f9ee261bd62 100644 --- a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g2_mul.csv +++ b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g2_mul.csv @@ -99,7 +99,7 @@ input,result,gas,notes 00000000000000000000000000000000156ca5e80be8c8c03a5506ce9abd22a9d4958c372678c0caf6f1329898507dfcb1f06a9464cf080bc6881fa5b7df1ebe00000000000000000000000000000000088174d486b4086b931010da298a399e15b60a113e08f571e096d3a4e94b57b3a684711318796eeca9319119b201abb30000000000000000000000000000000000b96ff68505c088cc03a1c2dc363b05bc8544728a12b29569bed137780523123eb17e68f4632383c252d81bca0c5ca9000000000000000000000000000000000486fc6e5224c5fad56234c41856e60bee4a6c1046f673bf7d5c1bbb603b141fc91074da5f9d3d41b796a2ebcebd9e74d16aa883a20307f5436354bab32b4633e83178f33626af3edb14f82724b8e125,0000000000000000000000000000000000ea29b1e059560fec21c3692d4e632a45c88a807c953fa23dbedb271b049d7fc717333b498ed12573a896f872e795dc000000000000000000000000000000000de0d10c47df92010a6635e3403dd6e91a1bf35bfcae82c1008998e86aa2d18a6cfd3f2f1207fde3bb39b723ec4d3ca60000000000000000000000000000000005e2aef9cd37430b15e5e76b2c7870630d255f630c12e865caefe308a39833e00319406746dbb2af3ed32135e91eed49000000000000000000000000000000000c229fad41b0d27ad7b5db33188fa70b97f22e323e429ef65fcf98f5339e908c31df8859b863356e0fc90538c5c49cf2,45000, 00000000000000000000000000000000121fe97c62e068988ebff21d8129d52aa903afdbb62862c7fd99564d9ad72182ab1f3a1100223ae486cd76f6938e123f000000000000000000000000000000000968ddedb04f52140160061828b5f88dfd09aaf37df625ee6f66b9500d6608df31c7edf86296eccf8f9918b051a5e4df000000000000000000000000000000000b7491cb8f6252e3861d7160feb0afdd736d27886863ec0909a7cc711a9b71aace18b17a00a2999dd57ca1a74f148516000000000000000000000000000000000fdb280093ef45b12b694ca3390a865ee18e4c04b231e2c98cc28706d4cefaf4e654582ee03f34ecf1dfa9674489d553041390a2209b80f7c64d14965cc2f515d5fbdf37953f75c4a0203bf0d9fb674b,000000000000000000000000000000000444a00cfd258bd46f659b09eef17be9929008d3d1c65e46cdc762eeaa2f0b52abfd636e6094e21983fad8171194c71a00000000000000000000000000000000090833e68614be5bf298e04e44527480cb35128bbdecae15eb95d6931a718f66869ddb68352130b4dd8a921ab3f26d080000000000000000000000000000000000994015b1b55340c3839d48320d178b2ffaa0bbff038f7aa63d4dff41a217582fae9613bc537fdeac8d0670c0cf479a000000000000000000000000000000000fc486e2a1680c10ca28d4c3bb22dbccc9572036512645bf868e7693ae4591569c973f9ea26342a573e23a06c2fb4b70,45000, 0000000000000000000000000000000010d001a09cf5dc3276482185f26ef3f75d28cd6d2667eb08a7fe06c03b99f3b6c4d82390739b6867a314291cc642a8b2000000000000000000000000000000000587846a460b1f37c2e7f491f9a097b4e86e1943d9cd0999313f65627b3907f09b5d5ac1be376a313a959dd136f7e9b3000000000000000000000000000000000af439695556e86b102926d3b40e3e54cc84464e120de3b4e3c5541a6a5bca44151fb0594009663764c1824518b13f020000000000000000000000000000000003bfd9418c1e57269e222152d321b83ae090f216cb422956dd1fcc464f68526cb4a05cdaefc7bbe6e81d4ffe27d64db47cf23dee8d95d94046678f3bdb4b0ea3d4e3a1a2f07f582e2a98ad6eb7562cbf,000000000000000000000000000000001375bd5ee66c330796bd8381a26cefa3f40f8cc8de42d4d59a7adbcd3852e6d632422e6ad9a06a6e497b23b17b1df87500000000000000000000000000000000165d8e7be17ecae9bf51a773da705aea42536d0fa3a2206267da50451f5104ee241811dd0e6710a80c38df77b126c009000000000000000000000000000000001559572407aff34969f83c394d2b095a7ae9f53a8e6c923910f256bb87b6ec076fa6acb85465102fd24d34031f88f7510000000000000000000000000000000015ff9ba89b55ef75f63732dec1e64106d7a912a6657fcc970dd011a03b5364117cca46d6cbafbc0c5049db10fa83fe6d,45000, -000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220e0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2dfb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e,,,invalid input parameters, invalid input length for G1 multiplication -0000000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220e0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2dfb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e,,,invalid input parameters, invalid input length for G1 multiplication -00000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220f0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2dfb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e,,,invalid input parameters, Point is not on curve -00000000000000000000000000000000197bfd0342bbc8bee2beced2f173e1a87be576379b343e93232d6cef98d84b1d696e5612ff283ce2cfdccb2cfb65fa0c00000000000000000000000000000000184e811f55e6f9d84d77d2f79102fd7ea7422f4759df5bf7f6331d550245e3f1bcf6a30e3b29110d85e0ca16f9f6ae7a000000000000000000000000000000000f10e1eb3c1e53d2ad9cf2d398b2dc22c5842fab0a74b174f691a7e914975da3564d835cd7d2982815b8ac57f507348f000000000000000000000000000000000767d1c453890f1b9110fda82f5815c27281aba3f026ee868e4176a0654feea41a96575e0c4d58a14dbfbcc05b5010b10000000000000000000000000000000000000000000000000000000000000002,,,Point is not in the expected subgroup +000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220e0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2dfb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e,,,invalid input parameters, invalid input length for G2 multiplication +0000000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220e0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2dfb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e,,,invalid input parameters, invalid input length for G2 multiplication +00000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220f0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2dfb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e,,,invalid point: point is not on curve +00000000000000000000000000000000197bfd0342bbc8bee2beced2f173e1a87be576379b343e93232d6cef98d84b1d696e5612ff283ce2cfdccb2cfb65fa0c00000000000000000000000000000000184e811f55e6f9d84d77d2f79102fd7ea7422f4759df5bf7f6331d550245e3f1bcf6a30e3b29110d85e0ca16f9f6ae7a000000000000000000000000000000000f10e1eb3c1e53d2ad9cf2d398b2dc22c5842fab0a74b174f691a7e914975da3564d835cd7d2982815b8ac57f507348f000000000000000000000000000000000767d1c453890f1b9110fda82f5815c27281aba3f026ee868e4176a0654feea41a96575e0c4d58a14dbfbcc05b5010b10000000000000000000000000000000000000000000000000000000000000002,,,invalid point: subgroup check failed diff --git a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g2_multiexp.csv b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g2_multiexp.csv index 460fd7fa3b27..dfeab857b7d6 100644 --- a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g2_multiexp.csv +++ b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/g2_multiexp.csv @@ -99,9 +99,9 @@ input,result,gas,notes 000000000000000000000000000000000cd1d25f285c2073175ecad5bba4987cc52012eadc7b19dbaa20fa82d7a6cfb8a52f33469b6308d921eb4b3b23f7022d000000000000000000000000000000001707b67a23d9212d30c06f26f0040c38389b185057e80236d2c828a8d9ade4f72eee1d6eccd78e4f4d71e2c28ee9539e0000000000000000000000000000000008e5c04effd14d915b9afc2083afa2b6d4008cfa0e47144a41982d8b5a8e77922a2609384e2c5d18c871ae24a7d505b7000000000000000000000000000000000f414acb056fff2cd6d9b408adb6eb7f34c8f66a66ee93945a3381d46c2d181613047ca6d4067614c190da444223cab685431a1df7678e49ee049b75ea968ca255ef456dd58cce57b64edffac1ac223c0000000000000000000000000000000008ea841aced2d0b8dd688947648a8ff18d0f6f03f63ee1c331f126dd4fc0da3d386535156b80902bdc1f65add7769cd70000000000000000000000000000000017a32ad2763d99c38c954f62466e78c0332e48875e15afbbe9c78376f1bab12346c73a573738353e2162d3928091dede0000000000000000000000000000000010ea738884dbfe5bc35d031bde9aa4109b1fca529502e236aebb5ad0bf71dd2f3db250d924415b0bfca56519f8ca5d290000000000000000000000000000000013699e29cc1871f51a469898be8b3c732b5cf7860286e655e65bd8176832804d17b48d0ff85eb023360db78162581297b6ccbc0b600f11f1b89061d94c6fbdc9b1d389244fb29a5d140dab8842d44eaa00000000000000000000000000000000004d504e62b2825651381ae862fd33407309851d5291591cd0f541fd092800d709ede00a9134e65ee752eaceb0a344b50000000000000000000000000000000016481efba290c37aa4ecbf940c76ee5df199b0c1f90fddebd2db28120bb5a14dd9f4a067b6d4889aeb683cca0f6ab337000000000000000000000000000000001400c89942cc63417ca4cb05c9d81dda3251e5611c27fc7727c3e803170672f103bff26f7216a0b646533aac3171488d0000000000000000000000000000000019889641be9db08880543ff476b9d4c72167092548ba49a3f3ace4518d3874f4f7993ae7b8cec90f092f144ec9d66c1a54dfe31190469897c30ac3736ab166220dd3702df5bc897835347713d03a8d04000000000000000000000000000000001927fe80adc6dbb581349c603103ad8831e645d9275af8669939b83829182cc6e2a30df2fdeda6d3aa2e2a6126e00ba3000000000000000000000000000000000b6d7934d5ca1098a85a0c60acca075220105e221b802b1be97c2967820bffc2937fc3278ed0f26905c60d44d5fd8dc000000000000000000000000000000000057acc1379f23c0d1d37427d400eb1b0a89f3736c83d3ffd797ae279e01e2acddd84082f13f3c8b8f1bf7c275702a9c700000000000000000000000000000000038dbcd7e08d34c553850a52336991a7d48968e98057e930790d78b5c6368eb2fe01571b60c4aefb653ec04122953d56eff1ceff9e5184dd9fea44da4f07529823dc9b100f776cef6f6881120f7de11a00000000000000000000000000000000014052031b88af979b7edb06c99c2e46bd9df2c862c7e1b71321754841fad67fc3242b51141e49ad86b61344aec913f40000000000000000000000000000000014806a86d078ee9bdde99257b67f50dc2ddf9bbf01dde931742ee6f739aa986cfdca06cd32d23d86f2c14c3b09033d29000000000000000000000000000000000e0561e795d35ceb8bd9e3b276406ec1f697a38ada25d1dbe08715a28bdd3d6ce6e0aac01f7dfc7c2b403850ab213b4700000000000000000000000000000000146a65209b09487e00e356e3b29952280ebc6a06343c4ce14efa0c6281bc2482698bd02295bc35125275ff5f5bb867dfb273e4c6266c1f5cf022902fe1310d2191af91c47995486342bc61cd361eab8500000000000000000000000000000000021592cd7f4cf9cab3be53561c889c9ee865961aad51339f6393dd6a0b7dcc8a7c48b753c947b15cd3add01abd3d76d8000000000000000000000000000000000f9e1a80bad58055a8577700c177889c4d702de04343c1202eaed9485a76493158547b20bcb552b66c42a0c86df809ed0000000000000000000000000000000013908dcff1945cf06f038e3caac9a7fbb3a6466ca18627e93468a875759a2b5599a96834ff21fcd6bfbba82b79536b9a0000000000000000000000000000000001b6354665109c5a64613c3bd7d805b3a34098708f3d41c7b77db031ac6fa0b2d4e2f2f70c84ac78687b0c0f9bf334771342b5cd4ad3179f406941ef6ea15d0aecdf9f6d96dc334c39b7dca89d256d4f0000000000000000000000000000000019394063202186e141dcebce7b8f0f267ba6057a0f993bb1cbe22a5bc528323823bfd1597a87017d478186a18f09a47800000000000000000000000000000000148437bcc43d432d70b47dadac8e738616c97d38d0f84dc132599626612f7bba74988bb23ae47ac15e6f70c059d607ed00000000000000000000000000000000180851594710f4bb5be7ae0104a383081c50f59e4e048614660ab5a4e2661e171510f5b112d8cf97a6af27d56d137c860000000000000000000000000000000000599f3f82f29b493ffe9ee3a8363b9a599a5ef3c9c5c680d4e003f4ac5a7de0562cba8e2a4c6da7d07cbe86c3f7bfb85b36620f65ed84fc0bb344b4b73f4eba4b1680a47b28b47f6d10f9ee82398125000000000000000000000000000000000cfdce7997601afbe484901893a1b5fc0b83e8d238d41d2f889a58fd4d884df1c667a000b53b587df2c42ad46aa2c3e0000000000000000000000000000000000c50bf3e06400cb10494cd09bd89f3c96ff49c9f74dd5325f9489ed6be13b59bd7b0b2351411ac854d430405b8a2a3de0000000000000000000000000000000001db313a34ca4073e4fa2287e234ac32bc579742de22e5218f7873b922f5804894826e6054925a394f125fce850f33ef000000000000000000000000000000000e0627a66d286e8d4d3654b32fc5f552a7ca12f0bd47eb6dee0dde22ee48165247c067a0f4c3d422bf3562d38a3c0cf1249ca9bcf879a770b0a054422a6ea97ae795118ae45532c1523c842696de6d170000000000000000000000000000000005285ba39f5bd981fce2fdf853706d70992acab2dc6d4c4198144fab397392a60d631056b580d0d98f3f350414ce554e0000000000000000000000000000000013bddbc1180f155872376fcdfaff2fb12d3d9645b81bd1475a5323ea855cea820ed7eb693791caa9bd3fa5c66036439700000000000000000000000000000000125644d32df397def58dff875d7e3f14166e765ed49a3991f45b38d74db3985fc7f5052058d85594c8b97afcf850e11b000000000000000000000000000000000fca4662eb1b39f576ee820385fba88ddd2fc01fcfb9d9f874453ad725cd5defb357be028fae97ce71bc5ac26d11c1bac014a0aa616e809b674390b4553bf2d9bf325e73d3a935eba94488dddee4e8950000000000000000000000000000000015b97d7c74c8ec102083b41d7ce5490466e1c0e261b5ea5c756d3f9ae79dd2d8ec6eb5075cfb76dfcf7bfdd80442f7d10000000000000000000000000000000016812f845faf96b8b69ac7a6af3c8947aa25877199e3c12552527706a17b768bbea259ea61ea82c4624a96cbcdf4040d00000000000000000000000000000000123ad55e5cb5ac5bdd3ca0a5afa7c3f8e4b98ad91a205f073fb546fe799ffc57b3c1c3a6209547ffc6ef05fd24be6f5d00000000000000000000000000000000017719f31946aedabe0e9d88ef3f90eb6ceda884f5e3d2ece368373785b2d8bf0f9677731803b25accfcb6cb716e0aa4ab722a1c20f068b6955a44073914c418a082345796912ca634e79983a24ec4bb0000000000000000000000000000000000497e3480d58027c780f47cc35a121ee0cd76c4e84d9a2f9002c04a1c286be990167a0138049ad70467132818f48ec9000000000000000000000000000000000ec0ddf938553105400f70989140ca322d996f48ffb1b35641ca36a6ba9ac1daac1603c100822f80cf62ec3bfb442158000000000000000000000000000000000a0b6ebee28a792df46d2f727af812c15fc91a471e0d8e34b25b26048f3b9606d8375b5b268c40fb04ef8f098e1d03340000000000000000000000000000000017843dd19bfabbd0cfa41fb58e70a8900397d17ccea783087ece90962560f5cf090e8d9eaa873a6a6ebac45219ea97a68b314f83cc3ad501caa44b4c3ca8cf68c70ff6920f445d3a7ada212b6a19ba3e000000000000000000000000000000000b27c82d71f7e4aab9a68596669596df3f62071e921e131ba4d9e59d8d81d370e077e93a4a6a43e059661227f40b38c800000000000000000000000000000000093004917ceb2fb4a1b33960ff74943d520f86e83aa02b9a6c85e4b9a489e9331863cd30cb6ad6f099d03289b4ada5520000000000000000000000000000000016f04e35186c7deaf730708e1678089bf3e73c1164bca24bf8f70c4f6cccd5bbb34bbb5dc313ee428aec4ac9c638a01a00000000000000000000000000000000011052348cec9dc3e85e01abcca5a652461f08a9f5d72b3fc27140a6a571137f0065ed7ccf9ec8cebe314ad9a214d5ed94ffab83099c69845cc87727d459ae300a5725ec53176424ab0ec8bd3f80eaff0000000000000000000000000000000007083dfb0738d58ba8933a1f60283e5da8bf90af5aae4053ca573ee7223d3b80e4bdc30b4a831ce6af9f52f393e9742600000000000000000000000000000000130c627b7d3a527c94cfeba9f514e75eac047e1b6088c082229a8c95d0765a0898ce1e45694ca2c7935bb8e41e44e8b10000000000000000000000000000000009610645b074e652a08f2b89dbe594afa3009d795ef211f7c036a56274b1e1bd69a035c4f356b6b21f69b9cec2bf7c32000000000000000000000000000000001020f3cdef468af700269aa1e9d928e71b8c521f23586c9b0155314f0073da7de04ca41ececd5edcc052af72c05f0e4bb1d80be637e2abd98d0433150e14b629d98fc0918c7dfc179204669ab465e90300000000000000000000000000000000123540047f0768b0af841aa4aeceaf3dac31ea832daed86c8cbd1d33ed0282c6f697d5881f9022af032e90ff82efb6bc000000000000000000000000000000000113daffbe413075f5f4f6fb42f37b6e9d5e5822aa24d6f865792f63e6078584246bcf8b17117385db1d6233974f6ed9000000000000000000000000000000001067b46fd221b6995d25d4bf0adb088e0554d858d4e5d9d6b59e1ae2a7d57188d559b0208918a8944aedd62b1ebd4f4700000000000000000000000000000000087dae77e483d5c0baa37b9b96dad5ca92b5869fa253bffad24dd8747446f7ce60858b52438e58233210d86f470f765fe670a57ce4dcfa680e60ef33ba99c437e4fdb160ea1012de36f4b59613a6af8500000000000000000000000000000000039d09a094d655c139cb9714aa258d9548473162548048b0f07c9317a41a7e5dbaa5aca156992c8a509d4071d9ae4394000000000000000000000000000000000f0273a38b1b9d006efa43c15a53f026587a676912d0275968608519e97994ea9c6a147e377f68b1738ebeaa178f9c1000000000000000000000000000000000132cd92417578d2e46884f1c1a1080b1916c8c8404d2533a4de02bf8575c80ce7e8097c2ddd1f95737355521c0ec21ce0000000000000000000000000000000019adbf09a268a3ed8eff936d25fbe8af2874e44d2580c7941dc14fb89c5da963b468a7088c4a763eac89f4d15deaaf5e54a999fdf391d3944318c54680e69b58ce3778683b6f2c607d64450ed32c6d89000000000000000000000000000000000756dced467ea32c3c425590b7690a45e250e464ac6927ad3f5d2d8d2826961b8dd7572db609375c8d06cc3b9bc3a157000000000000000000000000000000000b79b4eecbaf1d0f8a89f9ef8fc144b3aff38148ae260da7c20e9dd3866d946585df7ed12c8b7005e7b0e1387c9db41d000000000000000000000000000000000afc403b008b70e19f17b1ef37c9c396577a585b6c34b23d09621b891efc00ef9460c3f4b5f3e851ef63620dc06c824300000000000000000000000000000000024e06f3f3b18c026a166c41f75d7bcf699480f5b6811463c27606c9ec1232fd249a46235b7f5b5a2ed3b53231b333150563ae7b444cca7ebaba36b8d59aaa5c0e6c1454a4a2907866247e752e640a7d,0000000000000000000000000000000004f2480d0b7e84a996965b76055f6879aab5bab26656e4e5ca7220adc17f14b5946047484327bbc5952d9f2ffa5f92af0000000000000000000000000000000002f7260c55c500b54df4391a55eb4adefa7d19bcbec82a107fc0d222c898b97360a679a02ab3023ce2ebdcffd125ddf30000000000000000000000000000000002cddfa94c8f6b3f29c2fe018b1f8679d0e98c8c2656f86f327b9cbcba574cc52643ab423b458994a03347460deef6570000000000000000000000000000000014eb4c84f71ef5935e707a11a92ba34780677ac7eb198e160585ad92aa5c1ea21e3a77be940fe344e7e170680e2a8d53,240480, 000000000000000000000000000000000c2c4c039047d297049afd0e8f0375bd4294d628d3a22078d93b684b737e8c4b6ad3ee544ecbeaad6b3c75d8d217f3a20000000000000000000000000000000004c77a2c0943c6f997ce2e785461f8ec253c47273ded4e1af43ae882766ef8c168e66d831abc2b3b3a0849bbc210cbd40000000000000000000000000000000004456a6c267a5cc6b7d9a9f573270855186a1b621cfdc465fe71ddb4d614565d9d36b13985b31396587919226843c6230000000000000000000000000000000009487cdd8a0cf7f40e9087fd3121cb480730f4302339d25fa12128033239662ed65579a59b837bf1bc5fa87db15b15335b59d128b5ac47106b4114cf225dceb621d177141ef5783943f40a54ad94e990000000000000000000000000000000000ba43205e8392168824f77bac344d60c1a9a0b14ab55538c3bfea4a64984cf381a2f61c64f1ba1bcfd8a7973e43f6e80000000000000000000000000000000000e95e5ac415c3e3e7c9feb6e7a2af3e8189afca06ae1fe54bbeb31783810860921ab3c76a475fb227b3c8299e3f1caf00000000000000000000000000000000001e3cb2106a23e77a126013087751c4d2a419a51beedc3a33faa6c933bedb3d34ee9c6450c583642426edb352e04da98000000000000000000000000000000000ab5af4c98aca1fc3fa55355351d12f3bc639662bf8b5b772152988d676b00ef39f767237a2fa3be936e83d1dd77da86a057c0405e24b7373f67197b2109b633a02589711b6a92ff49ca024f893d7ecc0000000000000000000000000000000012f3d927316ba638bd6294f7dd2f3f166d20285ee1662ae4dc145835704a17127078343d26042a5c397bfef31754186200000000000000000000000000000000162893d6252361c340057bcac31986458b8b55a8a4283f5a06ce1730098f9838dad1bca264374e7261bb9d08c177c1820000000000000000000000000000000017264aead0ec41a079827296f3d32c12adfca7cb6c674070d54087438d57b6ccca4822b2337263e60075d469b4ce0ccc000000000000000000000000000000000480cae035bd3bf1b4a4a766bcd5f188833e9587e1aff0e1f10e36ebbf2f3ae76bc0946e7c336efc3ee00bf42e7efbb9677b05905180182427efeb848b2ba2eafbabc7519ab33db14de0746afb607191000000000000000000000000000000000d13375356b1518e37a13b43b7d192eb74bd69636f91c570c41a741a8763c03caf8d13c7364f57c867a4a3983e88060f000000000000000000000000000000000f6f78dffb404faab88ac7373e0c765209c0af80514d438e18393bfcfeb60d9a5e13158d399f43162033571ee4a75dbc0000000000000000000000000000000010c379860638ccf3b6cb8479aa38881b0004197e3e367a1d5ef7c7fcf075689d283b87022e2825b5c789ac6a448467320000000000000000000000000000000002dc392872cf2fcd8e196f10c1ded175300070e4e38aa58c89c81e1aa5faa08d770a5ad90a8295a890551f9329a13cee53e7f69582f4c106ee5bfccba1d5f557736c1b75b6e3777cfde47d552e6bdcac0000000000000000000000000000000010383a21acda7c8f3f3be980bff2d57fa0a5b2dc424164dd2ce53c0b20ca399d6227913b7b550462180b01c231e4813200000000000000000000000000000000078aec90354721f0a31e1377b3652bcb1f388ab36f1866c955f3ea8dfe6ac2c25bc4cea14f54aee71595c2c1bd2dc4910000000000000000000000000000000007dfeec77213d952c183452b98ad936e8854608d950c0c1451262cdc7d6de5aed0db07a8d74b3e8f674967cb4839c4d00000000000000000000000000000000015c09e4ed2ea76d10d196f7a733ccc272b94dc436d6bb5fafad2fae4a96372c2c6f1325d1554746814ae292d8e6b1e3634c87bfb629b817e7ab97def7400b0a83e47af8d628787ff814733fdf34ba8d500000000000000000000000000000000138656fa091cc6613b1fcff04a3efb4f9c393985b2c78fa838eecbbbb8b6dafd88d9c72441f9bc735649480b5187acac000000000000000000000000000000000a35cec4819ca3321917cea5aa589db8cf61882fd1135031dc41a8207a8e71d326312799291b160a646148c382ed086b0000000000000000000000000000000005b6e4c02c9c54630c96271073513cac3a42d47a7272f62a21c7ad4c85c19b60b70d04719626cf4273f6c5691719931700000000000000000000000000000000166a20da734a47d7e28cce8f0c2d679fa6c738a7a1ca9089dc67ba2b1c92a83b024b8991f131e7e8802a617153de4554bebb60069acf431e1671e3d00e4da0d70fa11ed4099b21d45a2b811f99dd9cca000000000000000000000000000000000a4432a544deda931b1f62759320ada2963062e722bc1b748c9bd0d026ffae10f228be36ea0ab076358924f4c06b6feb0000000000000000000000000000000000e955b1b1b28d2044b6be371c58bc85097c77145b239e913bb0729757518c465d9e69338066f7496aa6a2038ea604f900000000000000000000000000000000017ca2a7d52c3a82ab8abf9fc1bc187389b6e4904e161541008e5b3ba0981870e01060d1272a6d59bfcfb294c942403f000000000000000000000000000000001870649a50e0978185551f213eefd9305d33e92b3f8c39752b6ebe18ae86ad97f92acef05971dceee3b3729becea18168b1ee2765e762f1b8c2451270cd5a755758fd733d7922a537aa9f1fd7d0c95960000000000000000000000000000000013713effa20d5039ced751ebafe1516f062f11ee05ffad37281cfee9d7a49ab14c065709832f6674bfbf2c9f379bc9c9000000000000000000000000000000000295f7ef148430209b48c292b024474f05036edfdee082c56aea05a62f1fba3ee7a540955423f78614c8385da8ef60040000000000000000000000000000000007408c97321b6d7c27e5e442a9e35b054e743c34d845874aeb1ccf4e903ca7803ed7fb1288327865f9e0ff0a388e92b400000000000000000000000000000000081808d03722a2d48846a693059c2662dee614f181dc406825544d30a6adc0f9d84a712eff80bddd4a27a036e4bf7359d5009fd559714d5692de5500ec8cae9c04ae1ab1c7c6e08c8738ef22da19ceca000000000000000000000000000000000880b646a674723c15b240ff56d2031e5db724251b1402a68df8b26261ffc9fb60a81abf165c6832137dc7a7293142d200000000000000000000000000000000172354b62bfb8d388b5a984411414738302725a508e8abeacdcb46454371d5e9cf762028fb65921d5c3dd8c67d42a981000000000000000000000000000000000a1af459bc3122dcef78359e468f4094d609ae3da09ca5aa6efb71a7494dafa2373a3906bac1f324d98b3eaa982a27d500000000000000000000000000000000092ac3b47253c7f090df076914cdc08a715faf153e8e365392b4859fca1db14d3f7fb998c97de9ad99b7d0b357252f086330c755ef708d8eb129475785f24be9e7836385ac918c60ad36e80e2f3281b80000000000000000000000000000000003b23eff722c078a781771d8b75d519e7a062ca3e4252ecca877845920158fb20d79a9ce449d9087426b113da0091826000000000000000000000000000000000c9026e8d3fee6282492393db504a2c41db19d8fbb83260624b05ba4107d6cb2c90d645a3c16862b27cc3fcce9bf89840000000000000000000000000000000018b8648d0a42285d474f809519696df9e1ad5c35d8e848ad74fbee37425aee8844a8be8cb4d3331670ee294ddb9a290200000000000000000000000000000000068cad37ee8578f4b502ac2ef4371a10e5432e57fe20d0cb074dc427831872113d3514a0b199d813b796b8357fa2a3dbc2431888d05cae840dde4c26911db1893659fdc345d5433556d9bf75e51fe3740000000000000000000000000000000013200f0aea4c60937be47213b6149b0ae76767f3559e0519f774af4a5d9431e2dd7ea74b42cc3ceb28ccf0d2f01116f30000000000000000000000000000000001c5bff08fd16ecb68f21289a3e7b9a2ec5da1357d604710a18e78ab780f8ef0343d5d9ee7f7988a009329b17e498beb00000000000000000000000000000000125453772eb9d1335ce4dbcc8f2ab8426fe89a0e49fec51d4e96718a38570aa82dbef452368141be2df260fb131c50b2000000000000000000000000000000000432cdd445519775b9914a986a0941cc829b4a15cd361df9ae7129547b24f7a6a15cd8fe9393fa1551db2d761a208b8ec9a72369cda74e5c86c6559cbc4f4db1b3ab24c5150c7decea862ede3c02c505000000000000000000000000000000000396cb6d7b44f92b716ed02985d351b4e8cd1bbb95f239e4f29d7379428470be395e2faeb8e3a910007aaa490d3c336d0000000000000000000000000000000000ad0c0623fdf50c2b504777554dbab3cde1b9705e976561873d7c22b81f49c7654a7c76e558fad1518ed73a0d3c3570000000000000000000000000000000001241d5bed68e02a2ddeb3ccbe109a161abe81edd7affb72182c5163851211c4763e6aecf766053b61ce575de893985f800000000000000000000000000000000183696d2a48feef6088f4e9f75a5055e8c54b3813658b593958490ddd4245ac495a8ff966861b20f26047f07fa8609a0c2f50989b04fc29c4c4a0090fb11e860c15f89a66f3bb8281e4678ba63ff3f9a000000000000000000000000000000000fe0ce41aa9e7cb2bcb4e01721b7b1d99fca4e9b7c4df09bec00bd346fc57c25118ba70d5333b7f3eef2659c64520a470000000000000000000000000000000005c932e09c62b7ddaf3f5c420c60740befa7cdff5bb812e0f089c45098d71b57004b7a207f0cdd34daaa3282cf6e9f7e000000000000000000000000000000001874200ead9776c1ecd6a54a57e5d0f9577910a4b3afb9b051622f658fe3ef6cc5070af60e7ef910562720e9716158d6000000000000000000000000000000000c2c657e58e400a67e59deee8c28234ff4688e781a2f6f2f0d0b186a5e4012695a522dfa0770cfd543f55939a05e20b09fc9abf1c76ff11ab538f46ce768ba597eb5f2f63073ec67e8de10aa1d666720000000000000000000000000000000000f0b561e5860321249b9ff434c604d26c3275824fc4ab9c1ce5c5858605ddaafae83ae27e523bf6006932f6c7f33d0a7000000000000000000000000000000000b47aab85bbd909599aa85c5eda363b67790ac6729fd8b1f4f53f66dd796cf2fa3496407b1bfaea4dc8eae53519054e70000000000000000000000000000000000cab1ebd23bc05c53bc9e8481c469eac3ee1b140af545bebed10a8fe50698d2ed883219881929207c0addf2f687198d0000000000000000000000000000000007742de55b799950e6f786f4eef45d0fb67e0475272ad68a183135b70047abab6c2ed51ede16c39be7b986df334e9e75d4167723682bc0e7476797b3be5e14b8de3e4e23b4ca33c50a2096cda8766dd7000000000000000000000000000000000923861332988bc843a65ec5dd4637f9dca8a15e71b82c780fe60d768213d118d8948ab554e30bb9253e900a9b7d87f200000000000000000000000000000000132b1faef49e7966a05783ba526e71134bfb577b13116548352da37e91e617d7c72ed2645e672ebbc517e079247dfb0e00000000000000000000000000000000000a46a8893a194ebfe077afd05fb25d4680f1e4991a3ec29475fa5651d086d20b38136155a65a4c70af31de5a78af59000000000000000000000000000000001344eb957594028b4228cbdb8efb03cc7cf49ec43b2ca5481eae1df6f2df3d5be9a7c4e4e78f8c39be546e29a83c92f49644c3727f78dd12811092190d5d10adcd5b9fc581dd783c97d4e7b5130f309a0000000000000000000000000000000012d7111303563a6358e5ce9155d7a153b5781062c2f6b919efc67ddfb4c61ef03be8828ca6339397b84763a5f8a7e8330000000000000000000000000000000010a2a0ea9973728d3fb1b5906ee84b2635c687c11398ebf605cad30216df3b7b4e3ee1653d4b323a690e6ba614ebec30000000000000000000000000000000000b93d5de37b892d4de9407a820c73ecfd6cd9fa565db82e7e8c14c8406823f705ff0adf6bd6add5ddc5f72c91e52e840000000000000000000000000000000000dcb320ceba5436df8f099c5a77f34376c96d830f5e8ab80667d156d89f6bf8998c148ef9a53847ed395871ab86f6d280df9846c84354ab7f947caca7800e12e38d8e6651527e6831f4d8b1bd66c4f3d,000000000000000000000000000000000ff3e299e6b9fc488d6db991cf9d226d330846e87c4a5cd3e5d4ac955bc2c3c2d1ee5ff230098b48f594d256495f489800000000000000000000000000000000097fdb8fc95d64c7070d8c71e0fd2a933d1e1ad3fefa230f079bc5743828317cd1b0c6d4253ba9c3c6ec6b12d53afa700000000000000000000000000000000002448bbb179d82eaa453cd5452752b9a083b52694cc65c5d9b47f72eff118d7aa06b0fba18eafe93d2937d7399c001af0000000000000000000000000000000009dec4c0aff2a46b07855c87e08832811633709ddfbbc30dbb7e78b3de43bd95e383baa6ff4c58188f0c7643e0ea5a40,240480, 0000000000000000000000000000000008afabec8a9985cbbc6246825785654c1d2eb7da5a01f76c4af4d0096b9baed3c33dbe492d14a6f9e762f06eb3d198f800000000000000000000000000000000027c592315dee4bcc892acc6f41a6eff5219c308253f7cd715d0e4a32c03c6d0d0e8568e146e9e799ac3025486c77fc30000000000000000000000000000000015b4ee27a3aa518a1ec1b447bb8f9128301c85b7176296d68dad3339b1dee78715b2f031a7fb6ba376145c97ceafeef60000000000000000000000000000000004b7e30ec7cc024ced863ce511cef3cabe954a4e5843dd636d776645a44225a36ed7e153ab5bf5d18f23c6444751875c8a71abe11a893fce872f6b8a020b6d84241df03eb934b50cbf3571df4800a83300000000000000000000000000000000119949d36d8d8e2bc1c26ded5f5fb01225a980a28b934ed3862480dc9297a3758e0f08ccaab3a09b5e5c0e4215e3246c0000000000000000000000000000000004a82dc22316ee6af39d937b662d1f1f2dc855c2ca8f33ec3274d833e87d594633fc7fab247911e0f46564397910d6ce00000000000000000000000000000000196900a09d8504ed960d41f4a8a2cde2e5dac61b008d3f6eb47e86d7b2ce6fcdc0f85157e3ab1571094d9fdaa75d0d500000000000000000000000000000000010c52ef9407eb4ec57844aebbcc3ea5000b1940d035dcc2a873327affaaabdd79e3560cbd29c63ce04f6279056d6eed1bbf28e5bca314391550d3a0fce50b1220965860e72c8c3865a2d4c599d31d3f1000000000000000000000000000000000e43655ae05dc6cfa93113dc26cea895d1c5bc73f20454c7b441dbc5ac80035b290514b13b31b41931ea5336d8d9a6a7000000000000000000000000000000001199a873958c63147e6b82625dfea15ce90dd41ceb4e315f67221eb874ef32c6a2953412e7e981659c72239a7a72bfe6000000000000000000000000000000001845af5936b4d7487ffe59137ba2f86daea3770cf37fd560969ee48243389941a1072205e049ddaa06c0ac56b7edc8930000000000000000000000000000000003cc831177f24614f93a118b896434105f05a277051a852fb9973a775fc54f779c2a1f3d64c457e5231dc22d6aef606b58b208a6845aeb2bf31999042c59b7b130a7ce5297e88023953b1aef63616fe400000000000000000000000000000000005e63584bc85ba58615985f6a466afe05268e545e0062cd7214e0b6fc8b87537c745b754cd9a1144948bc88b3c43acd000000000000000000000000000000000635b6a49090ccede3ed2ef203f0ed164783e3df4d9a7d93319515cb9230bd841b61a097f39e30175793b3e934d8e426000000000000000000000000000000001861e65f47a9da1584c45bc79a66045d86bc1709c2d1cf6cd2930a9fcc8c4efaa6536b5015be8d54789e8f574f93f9f70000000000000000000000000000000009290ce63d55eb436794acf11be9d896f03e7608a1bc8528f61ec9473f054bc9fbbda1072440e58e2f6ba080a01180173b53b6cf9e0ce1661c4960283be790abf956c2d6433529b8f3a32b92b227aebe0000000000000000000000000000000018feed9500bff884d2bb58554da2180c68267b6d3a45c2c7cee4c3f8524252d3faaa5eff971bf40123587e669fe66bbb000000000000000000000000000000001441bd3b58b4a4a87c2459f873c0692f5977b775af984bab46dd76cb9f775d2faebcb77b2854c9f1faa33f6c5de61c6a00000000000000000000000000000000123a890c3362c77e5b5cf9846d9c9e43fb3242d5a831e640ad080993fa0547854c8d11cc22f7f7b426528bf1154d2300000000000000000000000000000000000ff4a59ea98d13cfd353ae61e18d3c7018688f755561e6a1da5f09acc4277e8d49645087115acc64f992ea778a11f39bb049228435ade4c4c565e65f39f13a84c747c312afcdaff352560b9fb3cfebcc0000000000000000000000000000000006b019d005141e82393a2ca04469d1f6fd7b9456001ffef4c34eff6b2e91df58e99fd07944f52b108bd41ab6c4d6bbf200000000000000000000000000000000109ae87042029856befff0c916db5437e1e058a96f2970d8816b3becc93a1a50d6d336d5451303715f3e272147a36caa0000000000000000000000000000000000fc381b8dc9dc02d34db13e34732a10d0dfcf676c224a05a3bffd888b0af7c415b38af0b6afe6b464ffca42947c6ee5000000000000000000000000000000000087040d09c39ccd06c9ecc360fa02147a32e8036ad6e4b6bdf5b3883722a4e5a887dd022d53706d2585fe558696be6656197f5ad17062d2ecbdc8887bcdd32e5ed4c48cefd9e14d622a0b800d970330000000000000000000000000000000000e35c27b29df0fa9298bb9ab6a38b3450782223e2115d79152f9baa924d762d583b3ebe88e42f33028814ec78e5b319d00000000000000000000000000000000190c65667627a16f0af0ac7f23af0803bca810f3986b906b7b4f126d98473d52badf45e90e2e45bb390242fa8c40135100000000000000000000000000000000103f0283a5673c16bcc0f74f259c2eb077061947da04e467dfebf62aa005491e32b85cb73418b624a30dbaa01672921e000000000000000000000000000000000465466955c908607191faf15f0768dce42488c488eb4a065977f21ac7484766bc0abf23961ea2ba46dcc04956abf6c7721d9d7fe10104cafcad71307e785321ab87b2b69593535caecbf0e166cfda5b00000000000000000000000000000000082346e352e845a54cd4267f93b85b2c8623d4650e00c1c56082b73ee31f63588d2c117d3cdecc0378fbbf8956b082040000000000000000000000000000000001a7f43c2bb19cb32345c43c950536f8e85815b86364f278f6ec8169eca80917c2b8fc08d59b20cf55f25dc468e7bd7f00000000000000000000000000000000085a5cb020df10f9b4c7afc01b1d11700579dec1e85e766507def2e6cf5b714174f7be9cce3b18533a5ebfeec2b4e481000000000000000000000000000000001836d7506d1cc984fb777b8ee935d6f5b110644f59e96ff44d8329336d59a3e1d2b53a05d35e97f634baa4fdc11a6cd8461531ecb61365908019c1e8074a4c322df2b356eea3f3eea9aa1e0e1fc5525e000000000000000000000000000000000c1c59828ec6257a02679cff0bee0d665d449d2a158bc6d877e84cc0fe2161c297dde09b778d5e1249c515833e483004000000000000000000000000000000000f5e82589bfb7781e4110f1486752b00cbdf96cdf4191d75053c6d6d646e1c989add011361031a11559e156d64139fbf0000000000000000000000000000000015053afa7fb2b4e4b70f3c8a570fef8288fdc22dd951b6ba8a40b6087b9ab04ede21f0ddfa84d6d18914041bcf244c110000000000000000000000000000000003f399800cba51ab35624d866831ab6506392cb3acf549787153ffaf08cc451acea46c7a612821dd96c45f8b75133d88569c1c1ae2d18bbe36ed50db1bf30957802b09a982fbed49d4968815552e010d000000000000000000000000000000000e26242c8f73116079369ef4265f624abd4377e4e3485c28197663de9de9f5618c3b6ee602ff6bebd1c242aef7295b2200000000000000000000000000000000066ceb3ea6067220bd28fa1164237782859d27c1d3087a42b4d09bcc343611e4ed2be014a27f5b394c67643dc00f57cf00000000000000000000000000000000157f9d30de52110ea7a2a35ddfe67d9fad7223c5e3307e797dd0df3621520a421958a2835205e3c4777923f47d47e5310000000000000000000000000000000016ebb41beb85b9489a6d5482f8a3330a5c5c5e5718e8efb8b67362f9d8e9c313e9e563275ba38c207c5bf3d89c406ea62061d33b2f7e786effbd2e93101a56ba1bb62c1a773a08b72ca82f5183bea35b0000000000000000000000000000000005d1c9109b5b7409f94ae3f7dd9e8ae4908a9b378fea4ea284cbd33d1e59b605577b63892aaa8ec14d415f34e22fec520000000000000000000000000000000005afed05e62599f20f7eca019f41d770c630cf6359cb5601464be821691fba5205c16e7b580e6881047214f938e5104b00000000000000000000000000000000105637a2aa4725d8e080dec3b731a111ea4c94b79f898dfd51f645501ef0c8d68ea8e80fde28ff96e927e44306ebbb1d00000000000000000000000000000000080cfeea754474ceb37973234d5dc3269f8ca99bd862d4d2d1a602321fc709945a3209e5ff2cc962cfa6d03017c9a1354129b150752d2d5551a622231ab067931678454aaeb23f76168219406f0d50ee00000000000000000000000000000000137762ea5c80033aaf17570451b15a062feedde810f11ebdbe9a79a3275dc12613e0505835c122bd5f9afea7dba84203000000000000000000000000000000000d89c04e45e60769a63fcd73df2a138c457bb549195f2c4eebb3be1ea46149f286756795be8328b5b886f497d8167b34000000000000000000000000000000000be43d515083c8c10f467618685a43d4d5f6457204bacd278445943a9f44f7189b561a0e1bc59d2757fcfab2e3f93a4a0000000000000000000000000000000011a52583227c6dcdc1784d3633fd584612a9f3bbc1922477396dcd5af84413e5e9382a34a71b3a72491ea09fab2fc6bf366c32d5d3c132f32a6ac3cfe1dabb649c59ae224338f747ad98b193e8346729000000000000000000000000000000000073acefe33525dd2d5204cce72371ed82c7e4b58d1b4e7f4b4994f9c58b02d9d6206fefb3552446b6b355e860ace43c0000000000000000000000000000000007344eaeaae71e17930e769e02bcb4f44ddf3d040ffa0b081f25901cc125a37a58a6a5d13e7b0ba493802ccdaa054e29000000000000000000000000000000000a65fec6ad29ec3eee9ddc7ded2297f49d03ff18a255f1e6d29d2a67c20713f319d79d513af0c58ae3cddfd1f6240ff50000000000000000000000000000000019d5f00d9e2b271f4e9ac779a096386f08ae124f77fb8183405d48ea7f16e685805442dc67a392aefc643ea95b4f1fcfd997516cac28a3968ac6946b5bffaace0856a52e38fdcca11ddfa16cf5a568f50000000000000000000000000000000018230bf1a873aa04855af1426da30f1b3ef4b64eec613b9f660222e3827b325c318baea031b463c7e9f775165d22ec8f00000000000000000000000000000000017faafa1294fac53e1de8cae9601acc62d76a5f01a39ce49d65f3f5d2cd5cca33eb90bb4116b3ea36f912ae2b81b6cf000000000000000000000000000000000fc3ef5ea59849a87fcd45500989f1744cb5570ee88e34a952cec32cea2eb5900b64d8d0d04ef5c51e8fdcccd46412490000000000000000000000000000000001c53aa8aaae8422fa4fddc86cacdefa89c37592c8e67e472a23627514623a90901a619af79e93561a0dc65215837274e881ec65fdc2f58e46d3ee45a06d0c5ac844ee5b62872c7ba21f6b48621a3371000000000000000000000000000000000e3db6885c2db9244548e11b8c49b73f85e4104b413f54308497262fdff1957495859830114528a22c45d39a554ba82700000000000000000000000000000000181b1bfe2d9a1c563e73356d73f4ed3e7061a79c610bc97c911ab1a0213d123c9f83ed6706e862087a796ce14c5cf53d0000000000000000000000000000000013f5fdceddce771588869b945bd6025e5ce485fe78a362356720b474b83998f27e535cfd8d33ee51cfc68e5d514f915c0000000000000000000000000000000007e8fd7ba457a3cefd50c641847425cf2262deb1d6945a0bd740eadf38dcaa616edc48c3912508d663349f089b8b56fadcd9b95e49473277a665ca0f9a8309df9ed6ee4f25d803aa967fb8f688273e650000000000000000000000000000000004b20b0408da7b704694b47607928a655077015f2174fe01bac9a0b3a61dae087b0b593f58d2947d8d84f75bbfb327c900000000000000000000000000000000106d623b2007c5d7128e03e540325ba763e992a651e2e5c78936f82ee2ff72d89a1a914345486cd0a04440c75beb190b000000000000000000000000000000001847348e5ef429cfdf1ba4d265d8c5ebcbec3d5dd4611ba36e2754fbd3d327273bf2eb7b7ba4b3888d059dc87f034739000000000000000000000000000000000bcb0a9dfe5189bc965e9721407b4cb3ed4171510aa4d4e5d5f0823a1c2827643e1278f9c0ee960c54ef8f6c208eee7b334582482a9038ab906880e43a4a9d39e73b6c63604eba0c8f6399eb5c288638,000000000000000000000000000000001205b70b29ee04212589f8a70a71e004f517d3354e714c1b4fe42cf93faf1a8ed40dbc1b5089ddb53bb052c9cb74c0e8000000000000000000000000000000000f619082734dd9de653b61cf2fb927199f228637db70797bd2a21fdd48b6ecd4c4f712097037534024880a436fdd63680000000000000000000000000000000000592eca560be6ae256abe1796f7ec394a8085c127437f6590c8d41501a482c61456392cb320b9e801044dcba7802df9000000000000000000000000000000000a6d20b8009708ca01a274aed6dece732c5eed5aae5e4c2f3793b5fa1f8cb8c95037ce387bda2e7476e9c493507c7fbc,240480, -000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220e0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2dfb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e0000000000000000000000000000000018c0ada6351b70661f053365deae56910798bd2ace6e2bf6ba4192d1a229967f6af6ca1c9a8a11ebc0a232344ee0f6d6000000000000000000000000000000000cc70a587f4652039d8117b6103858adcd9728f6aebe230578389a62da0042b7623b1c0436734f463cfdd187d20903240000000000000000000000000000000009f50bd7beedb23328818f9ffdafdb6da6a4dd80c5a9048ab8b154df3cad938ccede829f1156f769d9e149791e8e0cd900000000000000000000000000000000079ba50d2511631b20b6d6f3841e616e9d11b68ec3368cd60129d9d4787ab56c4e9145a38927e51c9cd6271d493d93884d0e25bf3f6fc9f4da25d21fdc71773f1947b7a8a775b8177f7eca990b05b71d0000000000000000000000000000000003632695b09dbf86163909d2bb25995b36ad1d137cf252860fd4bb6c95749e19eb0c1383e9d2f93f2791cb0cf6c8ed9d000000000000000000000000000000001688a855609b0bbff4452d146396558ff18777f329fd4f76a96859dabfc6a6f6977c2496280dbe3b1f8923990c1d6407000000000000000000000000000000000c8567fee05d05af279adc67179468a29d7520b067dbb348ee315a99504f70a206538b81a457cce855f4851ad48b7e80000000000000000000000000000000001238dcdfa80ea46e1500026ea5feadb421de4409f4992ffbf5ae59fa67fd82f38452642a50261b849e74b4a33eed70cc973f40c12c92b703d7b7848ef8b4466d40823aad3943a312b57432b91ff68be1000000000000000000000000000000000149704960cccf9d5ea414c73871e896b1d4cf0a946b0db72f5f2c5df98d2ec4f3adbbc14c78047961bc9620cb6cfb5900000000000000000000000000000000140c5d25e534fb1bfdc19ba4cecaabe619f6e0cd3d60b0f17dafd7bcd27b286d4f4477d00c5e1af22ee1a0c67fbf177c00000000000000000000000000000000029a1727041590b8459890de736df15c00d80ab007c3aee692ddcdf75790c9806d198e9f4502bec2f0a623491c3f877d0000000000000000000000000000000008a94c98baa9409151030d4fae2bd4a64c6f11ea3c99b9661fdaed226b9a7c2a7d609be34afda5d18b8911b6e015bf494c51f97bcdda93904ae26991b471e9ea942e2b5b8ed26055da11c58bc7b5002a000000000000000000000000000000001156d478661337478ab0cbc877a99d9e4d9824a2b3f605d41404d6b557b3ffabbf42635b0bbcb854cf9ed8b8637561a8000000000000000000000000000000001147ed317d5642e699787a7b47e6795c9a8943a34a694007e44f8654ba96390cf19f010dcf695e22c21874022c6ce291000000000000000000000000000000000c6dccdf920fd5e7fae284115511952633744c6ad94120d9cae6acda8a7c23c48bd912cba6c38de5159587e1e6cad519000000000000000000000000000000001944227d462bc2e5dcc6f6db0f83dad411ba8895262836f975b2b91e06fd0e2138862162acc04e9e65050b34ccbd1a4e8964d5867927bc3e35a0b4c457482373969bff5edff8a781d65573e07fd87b890000000000000000000000000000000019c31e3ab8cc9c920aa8f56371f133b6cb8d7b0b74b23c0c7201aca79e5ae69dc01f1f74d2492dcb081895b17d106b4e000000000000000000000000000000001789b0d371bd63077ccde3dbbebf3531368feb775bced187fb31cc6821481664600978e323ff21085b8c08e0f21daf72000000000000000000000000000000000009eacfe8f4a2a9bae6573424d07f42bd6af8a9d55f71476a7e3c7a4b2b898550c1e72ec13afd4eff22421a03af1d31000000000000000000000000000000000410bd4ea74dcfa33f2976aa1b571c67cbb596ab10f76a8aaf4548f1097e55b3373bff02683f806cb84e1e0e877819e2787c38b944eadbd03fd3187f450571740f6cd00e5b2e560165846eb800e5c94400000000000000000000000000000000147f09986691f2e57073378e8bfd58804241eed7934f6adfe6d0a6bac4da0b738495778a303e52113e1c80e698476d50000000000000000000000000000000000762348b84c92a8ca6de319cf1f8f11db296a71b90fe13e1e4bcd25903829c00a5d2ad4b1c8d98c37eaad7e042ab023d0000000000000000000000000000000011d1d94530d4a2daf0e902a5c3382cd135938557f94b04bccea5e16ea089c5e020e13524c854a316662bd68784fe31f300000000000000000000000000000000070828522bec75b6a492fd9bca7b54dac6fbbf4f0bc3179d312bb65c647439e3868e4d5b21af5a64c93aeee8a9b7e46eaaee7ae2a237e8e53560c79e7baa9adf9c00a0ea4d6f514e7a6832eb15cef1e1000000000000000000000000000000000690a0869204c8dced5ba0ce13554b2703a3f18afb8fa8fa1c457d79c58fdc25471ae85bafad52e506fc1917fc3becff0000000000000000000000000000000010f7dbb16f8571ede1cec79e3f9ea03ae6468d7285984713f19607f5cab902b9a6b7cbcfd900be5c2e407cc093ea0e6700000000000000000000000000000000151caf87968433cb1f85fc1854c57049be22c26497a86bfbd66a2b3af121d894dba8004a17c6ff96a5843c2719fa32d10000000000000000000000000000000011f0270f2b039409f70392879bcc2c67c836c100cf9883d3dc48d7adbcd52037d270539e863a951acd47ecaa1ca4db12dac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c0000000000000000000000000000000017fae043c8fd4c520a90d4a6bd95f5b0484acc279b899e7b1d8f7f7831cc6ba37cd5965c4dc674768f5805842d433af30000000000000000000000000000000008ddd7b41b8fa4d29fb931830f29b46f4015ec202d51cb969d7c832aafc0995c875cd45eff4a083e2d5ecb5ad185b64f0000000000000000000000000000000015d384ab7e52420b83a69827257cb52b00f0199ed2240a142812b46cf67e92b99942ac59fb9f9efd7dd822f5a36c799f00000000000000000000000000000000074b3a16a9cc4be9da0ac8e2e7003d9c1ec89244d2c33441b31af76716cce439f805843a9a44701203231efdca551d5bbb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd108000000000000000000000000000000000e25365988664e8b6ade2e5a40da49c11ff1e084cc0f8dca51f0d0578555d39e3617c8cadb2abc2633b28c5895ab0a9e00000000000000000000000000000000169f5fd768152169c403475dee475576fd2cc3788179453b0039ff3cb1b7a5a0fff8f82d03f56e65cad579218486c3b600000000000000000000000000000000087ccd7f92032febc1f75c7115111ede4acbb2e429cbccf3959524d0b79c449d431ff65485e1aecb442b53fec80ecb4000000000000000000000000000000000135d63f264360003b2eb28f126c6621a40088c6eb15acc4aea89d6068e9d5a47f842aa4b4300f5cda5cc5831edb81596fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f818767200000000000000000000000000000000159da74f15e4c614b418997f81a1b8a3d9eb8dd80d94b5bad664bff271bb0f2d8f3c4ceb947dc6300d5003a2f7d7a829000000000000000000000000000000000cdd4d1d4666f385dd54052cf5c1966328403251bebb29f0d553a9a96b5ade350c8493270e9b5282d8a06f9fa8d7b1d900000000000000000000000000000000189f8d3c94fdaa72cc67a7f93d35f91e22206ff9e97eed9601196c28d45b69c802ae92bcbf582754717b0355e08d37c000000000000000000000000000000000054b0a282610f108fc7f6736b8c22c8778d082bf4b0d0abca5a228198eba6a868910dd5c5c440036968e977955054196b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea000000000000000000000000000000000f29b0d2b6e3466668e1328048e8dbc782c1111ab8cbe718c85d58ded992d97ca8ba20b9d048feb6ed0aa1b4139d02d3000000000000000000000000000000000d1f0dae940b99fbfc6e4a58480cac8c4e6b2fe33ce6f39c7ac1671046ce94d9e16cba2bb62c6749ef73d45bea21501a000000000000000000000000000000001902ccece1c0c763fd06934a76d1f2f056563ae6d8592bafd589cfebd6f057726fd908614ccd6518a21c66ecc2f78b660000000000000000000000000000000017f6b113f8872c3187d20b0c765d73b850b54244a719cf461fb318796c0b8f310b5490959f9d9187f99c8ed3e25e42a93b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c76000000000000000000000000000000000576b8cf1e69efdc277465c344cadf7f8cceffacbeca83821f3ff81717308b97f4ac046f1926e7c2eb42677d7afc257c000000000000000000000000000000000cc1524531e96f3c00e4250dd351aedb5a4c3184aff52ec8c13d470068f5967f3674fe173ee239933e67501a9decc6680000000000000000000000000000000001610cfcaea414c241b44cf6f3cc319dcb51d6b8de29c8a6869ff7c1ebb7b747d881e922b42e8fab96bde7cf23e8e4cd0000000000000000000000000000000017d4444dc8b6893b681cf10dac8169054f9d2f61d3dd5fd785ae7afa49d18ebbde9ce8dde5641adc6b38173173459836dd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257c000000000000000000000000000000000ca8f961f86ee6c46fc88fbbf721ba760186f13cd4cce743f19dc60a89fd985cb3feee34dcc4656735a326f515a729e400000000000000000000000000000000174baf466b809b1155d524050f7ee58c7c5cf728c674e0ce549f5551047a4479ca15bdf69b403b03fa74eb1b26bbff6c0000000000000000000000000000000000e8c8b587c171b1b292779abfef57202ed29e7fe94ade9634ec5a2b3b4692a4f3c15468e3f6418b144674be70780d5b000000000000000000000000000000001865e99cf97d88bdf56dae32314eb32295c39a1e755cd7d1478bea8520b9ff21c39b683b92ae15568420c390c42b123b7010b134989c8368c7f831f9dd9f9a890e2c1435681107414f2e8637153bbf6a0000000000000000000000000000000017eccd446f10018219a1bd111b8786cf9febd49f9e7e754e82dd155ead59b819f0f20e42f4635d5044ec5d550d847623000000000000000000000000000000000403969d2b8f914ff2ea3bf902782642e2c6157bd2a343acf60ff9125b48b558d990a74c6d4d6398e7a3cc2a16037346000000000000000000000000000000000bd45f61f142bd78619fb520715320eb5e6ebafa8b078ce796ba62fe1a549d5fb9df57e92d8d2795988eb6ae18cf9d9300000000000000000000000000000000097db1314e064b8e670ec286958f17065bce644cf240ab1b1b220504560d36a0b43fc18453ff3a2bb315e219965f5bd394c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a65905400000000000000000000000000000000018244ab39a716e252cbfb986c7958b371e29ea9190010d1f5e1cfdb6ce4822d4055c37cd411fc9a0c46d728f2c13ecf0000000000000000000000000000000001985d3c667c8d68c9adb92bdc7a8af959c17146544997d97116120a0f55366bd7ad7ffa28d93ee51222ff9222779675000000000000000000000000000000000c70fd4e3c8f2a451f83fb6c046431b38251b7bae44cf8d36df69a03e2d3ce6137498523fcf0bcf29b5d69e8f265e24d00000000000000000000000000000000047b9163a218f7654a72e0d7c651a2cf7fd95e9784a59e0bf119d081de6c0465d374a55fbc1eff9828c9fd29abf4c4bdb3682accc3939283b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746,,,invalid input parameters, invalid input length for G1 multiplication -0000000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220e0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2dfb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e0000000000000000000000000000000018c0ada6351b70661f053365deae56910798bd2ace6e2bf6ba4192d1a229967f6af6ca1c9a8a11ebc0a232344ee0f6d6000000000000000000000000000000000cc70a587f4652039d8117b6103858adcd9728f6aebe230578389a62da0042b7623b1c0436734f463cfdd187d20903240000000000000000000000000000000009f50bd7beedb23328818f9ffdafdb6da6a4dd80c5a9048ab8b154df3cad938ccede829f1156f769d9e149791e8e0cd900000000000000000000000000000000079ba50d2511631b20b6d6f3841e616e9d11b68ec3368cd60129d9d4787ab56c4e9145a38927e51c9cd6271d493d93884d0e25bf3f6fc9f4da25d21fdc71773f1947b7a8a775b8177f7eca990b05b71d0000000000000000000000000000000003632695b09dbf86163909d2bb25995b36ad1d137cf252860fd4bb6c95749e19eb0c1383e9d2f93f2791cb0cf6c8ed9d000000000000000000000000000000001688a855609b0bbff4452d146396558ff18777f329fd4f76a96859dabfc6a6f6977c2496280dbe3b1f8923990c1d6407000000000000000000000000000000000c8567fee05d05af279adc67179468a29d7520b067dbb348ee315a99504f70a206538b81a457cce855f4851ad48b7e80000000000000000000000000000000001238dcdfa80ea46e1500026ea5feadb421de4409f4992ffbf5ae59fa67fd82f38452642a50261b849e74b4a33eed70cc973f40c12c92b703d7b7848ef8b4466d40823aad3943a312b57432b91ff68be1000000000000000000000000000000000149704960cccf9d5ea414c73871e896b1d4cf0a946b0db72f5f2c5df98d2ec4f3adbbc14c78047961bc9620cb6cfb5900000000000000000000000000000000140c5d25e534fb1bfdc19ba4cecaabe619f6e0cd3d60b0f17dafd7bcd27b286d4f4477d00c5e1af22ee1a0c67fbf177c00000000000000000000000000000000029a1727041590b8459890de736df15c00d80ab007c3aee692ddcdf75790c9806d198e9f4502bec2f0a623491c3f877d0000000000000000000000000000000008a94c98baa9409151030d4fae2bd4a64c6f11ea3c99b9661fdaed226b9a7c2a7d609be34afda5d18b8911b6e015bf494c51f97bcdda93904ae26991b471e9ea942e2b5b8ed26055da11c58bc7b5002a000000000000000000000000000000001156d478661337478ab0cbc877a99d9e4d9824a2b3f605d41404d6b557b3ffabbf42635b0bbcb854cf9ed8b8637561a8000000000000000000000000000000001147ed317d5642e699787a7b47e6795c9a8943a34a694007e44f8654ba96390cf19f010dcf695e22c21874022c6ce291000000000000000000000000000000000c6dccdf920fd5e7fae284115511952633744c6ad94120d9cae6acda8a7c23c48bd912cba6c38de5159587e1e6cad519000000000000000000000000000000001944227d462bc2e5dcc6f6db0f83dad411ba8895262836f975b2b91e06fd0e2138862162acc04e9e65050b34ccbd1a4e8964d5867927bc3e35a0b4c457482373969bff5edff8a781d65573e07fd87b890000000000000000000000000000000019c31e3ab8cc9c920aa8f56371f133b6cb8d7b0b74b23c0c7201aca79e5ae69dc01f1f74d2492dcb081895b17d106b4e000000000000000000000000000000001789b0d371bd63077ccde3dbbebf3531368feb775bced187fb31cc6821481664600978e323ff21085b8c08e0f21daf72000000000000000000000000000000000009eacfe8f4a2a9bae6573424d07f42bd6af8a9d55f71476a7e3c7a4b2b898550c1e72ec13afd4eff22421a03af1d31000000000000000000000000000000000410bd4ea74dcfa33f2976aa1b571c67cbb596ab10f76a8aaf4548f1097e55b3373bff02683f806cb84e1e0e877819e2787c38b944eadbd03fd3187f450571740f6cd00e5b2e560165846eb800e5c94400000000000000000000000000000000147f09986691f2e57073378e8bfd58804241eed7934f6adfe6d0a6bac4da0b738495778a303e52113e1c80e698476d50000000000000000000000000000000000762348b84c92a8ca6de319cf1f8f11db296a71b90fe13e1e4bcd25903829c00a5d2ad4b1c8d98c37eaad7e042ab023d0000000000000000000000000000000011d1d94530d4a2daf0e902a5c3382cd135938557f94b04bccea5e16ea089c5e020e13524c854a316662bd68784fe31f300000000000000000000000000000000070828522bec75b6a492fd9bca7b54dac6fbbf4f0bc3179d312bb65c647439e3868e4d5b21af5a64c93aeee8a9b7e46eaaee7ae2a237e8e53560c79e7baa9adf9c00a0ea4d6f514e7a6832eb15cef1e1000000000000000000000000000000000690a0869204c8dced5ba0ce13554b2703a3f18afb8fa8fa1c457d79c58fdc25471ae85bafad52e506fc1917fc3becff0000000000000000000000000000000010f7dbb16f8571ede1cec79e3f9ea03ae6468d7285984713f19607f5cab902b9a6b7cbcfd900be5c2e407cc093ea0e6700000000000000000000000000000000151caf87968433cb1f85fc1854c57049be22c26497a86bfbd66a2b3af121d894dba8004a17c6ff96a5843c2719fa32d10000000000000000000000000000000011f0270f2b039409f70392879bcc2c67c836c100cf9883d3dc48d7adbcd52037d270539e863a951acd47ecaa1ca4db12dac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c0000000000000000000000000000000017fae043c8fd4c520a90d4a6bd95f5b0484acc279b899e7b1d8f7f7831cc6ba37cd5965c4dc674768f5805842d433af30000000000000000000000000000000008ddd7b41b8fa4d29fb931830f29b46f4015ec202d51cb969d7c832aafc0995c875cd45eff4a083e2d5ecb5ad185b64f0000000000000000000000000000000015d384ab7e52420b83a69827257cb52b00f0199ed2240a142812b46cf67e92b99942ac59fb9f9efd7dd822f5a36c799f00000000000000000000000000000000074b3a16a9cc4be9da0ac8e2e7003d9c1ec89244d2c33441b31af76716cce439f805843a9a44701203231efdca551d5bbb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd108000000000000000000000000000000000e25365988664e8b6ade2e5a40da49c11ff1e084cc0f8dca51f0d0578555d39e3617c8cadb2abc2633b28c5895ab0a9e00000000000000000000000000000000169f5fd768152169c403475dee475576fd2cc3788179453b0039ff3cb1b7a5a0fff8f82d03f56e65cad579218486c3b600000000000000000000000000000000087ccd7f92032febc1f75c7115111ede4acbb2e429cbccf3959524d0b79c449d431ff65485e1aecb442b53fec80ecb4000000000000000000000000000000000135d63f264360003b2eb28f126c6621a40088c6eb15acc4aea89d6068e9d5a47f842aa4b4300f5cda5cc5831edb81596fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f818767200000000000000000000000000000000159da74f15e4c614b418997f81a1b8a3d9eb8dd80d94b5bad664bff271bb0f2d8f3c4ceb947dc6300d5003a2f7d7a829000000000000000000000000000000000cdd4d1d4666f385dd54052cf5c1966328403251bebb29f0d553a9a96b5ade350c8493270e9b5282d8a06f9fa8d7b1d900000000000000000000000000000000189f8d3c94fdaa72cc67a7f93d35f91e22206ff9e97eed9601196c28d45b69c802ae92bcbf582754717b0355e08d37c000000000000000000000000000000000054b0a282610f108fc7f6736b8c22c8778d082bf4b0d0abca5a228198eba6a868910dd5c5c440036968e977955054196b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea000000000000000000000000000000000f29b0d2b6e3466668e1328048e8dbc782c1111ab8cbe718c85d58ded992d97ca8ba20b9d048feb6ed0aa1b4139d02d3000000000000000000000000000000000d1f0dae940b99fbfc6e4a58480cac8c4e6b2fe33ce6f39c7ac1671046ce94d9e16cba2bb62c6749ef73d45bea21501a000000000000000000000000000000001902ccece1c0c763fd06934a76d1f2f056563ae6d8592bafd589cfebd6f057726fd908614ccd6518a21c66ecc2f78b660000000000000000000000000000000017f6b113f8872c3187d20b0c765d73b850b54244a719cf461fb318796c0b8f310b5490959f9d9187f99c8ed3e25e42a93b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c76000000000000000000000000000000000576b8cf1e69efdc277465c344cadf7f8cceffacbeca83821f3ff81717308b97f4ac046f1926e7c2eb42677d7afc257c000000000000000000000000000000000cc1524531e96f3c00e4250dd351aedb5a4c3184aff52ec8c13d470068f5967f3674fe173ee239933e67501a9decc6680000000000000000000000000000000001610cfcaea414c241b44cf6f3cc319dcb51d6b8de29c8a6869ff7c1ebb7b747d881e922b42e8fab96bde7cf23e8e4cd0000000000000000000000000000000017d4444dc8b6893b681cf10dac8169054f9d2f61d3dd5fd785ae7afa49d18ebbde9ce8dde5641adc6b38173173459836dd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257c000000000000000000000000000000000ca8f961f86ee6c46fc88fbbf721ba760186f13cd4cce743f19dc60a89fd985cb3feee34dcc4656735a326f515a729e400000000000000000000000000000000174baf466b809b1155d524050f7ee58c7c5cf728c674e0ce549f5551047a4479ca15bdf69b403b03fa74eb1b26bbff6c0000000000000000000000000000000000e8c8b587c171b1b292779abfef57202ed29e7fe94ade9634ec5a2b3b4692a4f3c15468e3f6418b144674be70780d5b000000000000000000000000000000001865e99cf97d88bdf56dae32314eb32295c39a1e755cd7d1478bea8520b9ff21c39b683b92ae15568420c390c42b123b7010b134989c8368c7f831f9dd9f9a890e2c1435681107414f2e8637153bbf6a0000000000000000000000000000000017eccd446f10018219a1bd111b8786cf9febd49f9e7e754e82dd155ead59b819f0f20e42f4635d5044ec5d550d847623000000000000000000000000000000000403969d2b8f914ff2ea3bf902782642e2c6157bd2a343acf60ff9125b48b558d990a74c6d4d6398e7a3cc2a16037346000000000000000000000000000000000bd45f61f142bd78619fb520715320eb5e6ebafa8b078ce796ba62fe1a549d5fb9df57e92d8d2795988eb6ae18cf9d9300000000000000000000000000000000097db1314e064b8e670ec286958f17065bce644cf240ab1b1b220504560d36a0b43fc18453ff3a2bb315e219965f5bd394c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a65905400000000000000000000000000000000018244ab39a716e252cbfb986c7958b371e29ea9190010d1f5e1cfdb6ce4822d4055c37cd411fc9a0c46d728f2c13ecf0000000000000000000000000000000001985d3c667c8d68c9adb92bdc7a8af959c17146544997d97116120a0f55366bd7ad7ffa28d93ee51222ff9222779675000000000000000000000000000000000c70fd4e3c8f2a451f83fb6c046431b38251b7bae44cf8d36df69a03e2d3ce6137498523fcf0bcf29b5d69e8f265e24d00000000000000000000000000000000047b9163a218f7654a72e0d7c651a2cf7fd95e9784a59e0bf119d081de6c0465d374a55fbc1eff9828c9fd29abf4c4bdb3682accc3939283b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746,,,invalid input parameters, invalid input length for G1 multiplication -,,,invalid input parameters, Invalid number of pairs -00000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220f0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2dfb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e0000000000000000000000000000000018c0ada6351b70661f053365deae56910798bd2ace6e2bf6ba4192d1a229967f6af6ca1c9a8a11ebc0a232344ee0f6d6000000000000000000000000000000000cc70a587f4652039d8117b6103858adcd9728f6aebe230578389a62da0042b7623b1c0436734f463cfdd187d20903240000000000000000000000000000000009f50bd7beedb23328818f9ffdafdb6da6a4dd80c5a9048ab8b154df3cad938ccede829f1156f769d9e149791e8e0cd900000000000000000000000000000000079ba50d2511631b20b6d6f3841e616e9d11b68ec3368cd60129d9d4787ab56c4e9145a38927e51c9cd6271d493d93884d0e25bf3f6fc9f4da25d21fdc71773f1947b7a8a775b8177f7eca990b05b71d0000000000000000000000000000000003632695b09dbf86163909d2bb25995b36ad1d137cf252860fd4bb6c95749e19eb0c1383e9d2f93f2791cb0cf6c8ed9d000000000000000000000000000000001688a855609b0bbff4452d146396558ff18777f329fd4f76a96859dabfc6a6f6977c2496280dbe3b1f8923990c1d6407000000000000000000000000000000000c8567fee05d05af279adc67179468a29d7520b067dbb348ee315a99504f70a206538b81a457cce855f4851ad48b7e80000000000000000000000000000000001238dcdfa80ea46e1500026ea5feadb421de4409f4992ffbf5ae59fa67fd82f38452642a50261b849e74b4a33eed70cc973f40c12c92b703d7b7848ef8b4466d40823aad3943a312b57432b91ff68be1000000000000000000000000000000000149704960cccf9d5ea414c73871e896b1d4cf0a946b0db72f5f2c5df98d2ec4f3adbbc14c78047961bc9620cb6cfb5900000000000000000000000000000000140c5d25e534fb1bfdc19ba4cecaabe619f6e0cd3d60b0f17dafd7bcd27b286d4f4477d00c5e1af22ee1a0c67fbf177c00000000000000000000000000000000029a1727041590b8459890de736df15c00d80ab007c3aee692ddcdf75790c9806d198e9f4502bec2f0a623491c3f877d0000000000000000000000000000000008a94c98baa9409151030d4fae2bd4a64c6f11ea3c99b9661fdaed226b9a7c2a7d609be34afda5d18b8911b6e015bf494c51f97bcdda93904ae26991b471e9ea942e2b5b8ed26055da11c58bc7b5002a000000000000000000000000000000001156d478661337478ab0cbc877a99d9e4d9824a2b3f605d41404d6b557b3ffabbf42635b0bbcb854cf9ed8b8637561a8000000000000000000000000000000001147ed317d5642e699787a7b47e6795c9a8943a34a694007e44f8654ba96390cf19f010dcf695e22c21874022c6ce291000000000000000000000000000000000c6dccdf920fd5e7fae284115511952633744c6ad94120d9cae6acda8a7c23c48bd912cba6c38de5159587e1e6cad519000000000000000000000000000000001944227d462bc2e5dcc6f6db0f83dad411ba8895262836f975b2b91e06fd0e2138862162acc04e9e65050b34ccbd1a4e8964d5867927bc3e35a0b4c457482373969bff5edff8a781d65573e07fd87b890000000000000000000000000000000019c31e3ab8cc9c920aa8f56371f133b6cb8d7b0b74b23c0c7201aca79e5ae69dc01f1f74d2492dcb081895b17d106b4e000000000000000000000000000000001789b0d371bd63077ccde3dbbebf3531368feb775bced187fb31cc6821481664600978e323ff21085b8c08e0f21daf72000000000000000000000000000000000009eacfe8f4a2a9bae6573424d07f42bd6af8a9d55f71476a7e3c7a4b2b898550c1e72ec13afd4eff22421a03af1d31000000000000000000000000000000000410bd4ea74dcfa33f2976aa1b571c67cbb596ab10f76a8aaf4548f1097e55b3373bff02683f806cb84e1e0e877819e2787c38b944eadbd03fd3187f450571740f6cd00e5b2e560165846eb800e5c94400000000000000000000000000000000147f09986691f2e57073378e8bfd58804241eed7934f6adfe6d0a6bac4da0b738495778a303e52113e1c80e698476d50000000000000000000000000000000000762348b84c92a8ca6de319cf1f8f11db296a71b90fe13e1e4bcd25903829c00a5d2ad4b1c8d98c37eaad7e042ab023d0000000000000000000000000000000011d1d94530d4a2daf0e902a5c3382cd135938557f94b04bccea5e16ea089c5e020e13524c854a316662bd68784fe31f300000000000000000000000000000000070828522bec75b6a492fd9bca7b54dac6fbbf4f0bc3179d312bb65c647439e3868e4d5b21af5a64c93aeee8a9b7e46eaaee7ae2a237e8e53560c79e7baa9adf9c00a0ea4d6f514e7a6832eb15cef1e1000000000000000000000000000000000690a0869204c8dced5ba0ce13554b2703a3f18afb8fa8fa1c457d79c58fdc25471ae85bafad52e506fc1917fc3becff0000000000000000000000000000000010f7dbb16f8571ede1cec79e3f9ea03ae6468d7285984713f19607f5cab902b9a6b7cbcfd900be5c2e407cc093ea0e6700000000000000000000000000000000151caf87968433cb1f85fc1854c57049be22c26497a86bfbd66a2b3af121d894dba8004a17c6ff96a5843c2719fa32d10000000000000000000000000000000011f0270f2b039409f70392879bcc2c67c836c100cf9883d3dc48d7adbcd52037d270539e863a951acd47ecaa1ca4db12dac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c0000000000000000000000000000000017fae043c8fd4c520a90d4a6bd95f5b0484acc279b899e7b1d8f7f7831cc6ba37cd5965c4dc674768f5805842d433af30000000000000000000000000000000008ddd7b41b8fa4d29fb931830f29b46f4015ec202d51cb969d7c832aafc0995c875cd45eff4a083e2d5ecb5ad185b64f0000000000000000000000000000000015d384ab7e52420b83a69827257cb52b00f0199ed2240a142812b46cf67e92b99942ac59fb9f9efd7dd822f5a36c799f00000000000000000000000000000000074b3a16a9cc4be9da0ac8e2e7003d9c1ec89244d2c33441b31af76716cce439f805843a9a44701203231efdca551d5bbb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd108000000000000000000000000000000000e25365988664e8b6ade2e5a40da49c11ff1e084cc0f8dca51f0d0578555d39e3617c8cadb2abc2633b28c5895ab0a9e00000000000000000000000000000000169f5fd768152169c403475dee475576fd2cc3788179453b0039ff3cb1b7a5a0fff8f82d03f56e65cad579218486c3b600000000000000000000000000000000087ccd7f92032febc1f75c7115111ede4acbb2e429cbccf3959524d0b79c449d431ff65485e1aecb442b53fec80ecb4000000000000000000000000000000000135d63f264360003b2eb28f126c6621a40088c6eb15acc4aea89d6068e9d5a47f842aa4b4300f5cda5cc5831edb81596fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f818767200000000000000000000000000000000159da74f15e4c614b418997f81a1b8a3d9eb8dd80d94b5bad664bff271bb0f2d8f3c4ceb947dc6300d5003a2f7d7a829000000000000000000000000000000000cdd4d1d4666f385dd54052cf5c1966328403251bebb29f0d553a9a96b5ade350c8493270e9b5282d8a06f9fa8d7b1d900000000000000000000000000000000189f8d3c94fdaa72cc67a7f93d35f91e22206ff9e97eed9601196c28d45b69c802ae92bcbf582754717b0355e08d37c000000000000000000000000000000000054b0a282610f108fc7f6736b8c22c8778d082bf4b0d0abca5a228198eba6a868910dd5c5c440036968e977955054196b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea000000000000000000000000000000000f29b0d2b6e3466668e1328048e8dbc782c1111ab8cbe718c85d58ded992d97ca8ba20b9d048feb6ed0aa1b4139d02d3000000000000000000000000000000000d1f0dae940b99fbfc6e4a58480cac8c4e6b2fe33ce6f39c7ac1671046ce94d9e16cba2bb62c6749ef73d45bea21501a000000000000000000000000000000001902ccece1c0c763fd06934a76d1f2f056563ae6d8592bafd589cfebd6f057726fd908614ccd6518a21c66ecc2f78b660000000000000000000000000000000017f6b113f8872c3187d20b0c765d73b850b54244a719cf461fb318796c0b8f310b5490959f9d9187f99c8ed3e25e42a93b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c76000000000000000000000000000000000576b8cf1e69efdc277465c344cadf7f8cceffacbeca83821f3ff81717308b97f4ac046f1926e7c2eb42677d7afc257c000000000000000000000000000000000cc1524531e96f3c00e4250dd351aedb5a4c3184aff52ec8c13d470068f5967f3674fe173ee239933e67501a9decc6680000000000000000000000000000000001610cfcaea414c241b44cf6f3cc319dcb51d6b8de29c8a6869ff7c1ebb7b747d881e922b42e8fab96bde7cf23e8e4cd0000000000000000000000000000000017d4444dc8b6893b681cf10dac8169054f9d2f61d3dd5fd785ae7afa49d18ebbde9ce8dde5641adc6b38173173459836dd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257c000000000000000000000000000000000ca8f961f86ee6c46fc88fbbf721ba760186f13cd4cce743f19dc60a89fd985cb3feee34dcc4656735a326f515a729e400000000000000000000000000000000174baf466b809b1155d524050f7ee58c7c5cf728c674e0ce549f5551047a4479ca15bdf69b403b03fa74eb1b26bbff6c0000000000000000000000000000000000e8c8b587c171b1b292779abfef57202ed29e7fe94ade9634ec5a2b3b4692a4f3c15468e3f6418b144674be70780d5b000000000000000000000000000000001865e99cf97d88bdf56dae32314eb32295c39a1e755cd7d1478bea8520b9ff21c39b683b92ae15568420c390c42b123b7010b134989c8368c7f831f9dd9f9a890e2c1435681107414f2e8637153bbf6a0000000000000000000000000000000017eccd446f10018219a1bd111b8786cf9febd49f9e7e754e82dd155ead59b819f0f20e42f4635d5044ec5d550d847623000000000000000000000000000000000403969d2b8f914ff2ea3bf902782642e2c6157bd2a343acf60ff9125b48b558d990a74c6d4d6398e7a3cc2a16037346000000000000000000000000000000000bd45f61f142bd78619fb520715320eb5e6ebafa8b078ce796ba62fe1a549d5fb9df57e92d8d2795988eb6ae18cf9d9300000000000000000000000000000000097db1314e064b8e670ec286958f17065bce644cf240ab1b1b220504560d36a0b43fc18453ff3a2bb315e219965f5bd394c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a65905400000000000000000000000000000000018244ab39a716e252cbfb986c7958b371e29ea9190010d1f5e1cfdb6ce4822d4055c37cd411fc9a0c46d728f2c13ecf0000000000000000000000000000000001985d3c667c8d68c9adb92bdc7a8af959c17146544997d97116120a0f55366bd7ad7ffa28d93ee51222ff9222779675000000000000000000000000000000000c70fd4e3c8f2a451f83fb6c046431b38251b7bae44cf8d36df69a03e2d3ce6137498523fcf0bcf29b5d69e8f265e24d00000000000000000000000000000000047b9163a218f7654a72e0d7c651a2cf7fd95e9784a59e0bf119d081de6c0465d374a55fbc1eff9828c9fd29abf4c4bdb3682accc3939283b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746,,,invalid input parameters, Point is not on curve -00000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220e0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2dfb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e0000000000000000000000000000000018c0ada6351b70661f053365deae56910798bd2ace6e2bf6ba4192d1a229967f6af6ca1c9a8a11ebc0a232344ee0f6d6000000000000000000000000000000000cc70a587f4652039d8117b6103858adcd9728f6aebe230578389a62da0042b7623b1c0436734f463cfdd187d20903240000000000000000000000000000000009f50bd7beedb23328818f9ffdafdb6da6a4dd80c5a9048ab8b154df3cad938ccede829f1156f769d9e149791e8e0cd900000000000000000000000000000000079ba50d2511631b20b6d6f3841e616e9d11b68ec3368cd60129d9d4787ab56c4e9145a38927e51c9cd6271d493d93884d0e25bf3f6fc9f4da25d21fdc71773f1947b7a8a775b8177f7eca990b05b71d0000000000000000000000000000000003632695b09dbf86163909d2bb25995b36ad1d137cf252860fd4bb6c95749e19eb0c1383e9d2f93f2791cb0cf6c8ed9d000000000000000000000000000000001688a855609b0bbff4452d146396558ff18777f329fd4f76a96859dabfc6a6f6977c2496280dbe3b1f8923990c1d6407000000000000000000000000000000000c8567fee05d05af279adc67179468a29d7520b067dbb348ee315a99504f70a206538b81a457cce855f4851ad48b7e80000000000000000000000000000000001238dcdfa80ea46e1500026ea5feadb421de4409f4992ffbf5ae59fa67fd82f38452642a50261b849e74b4a33eed70cc973f40c12c92b703d7b7848ef8b4466d40823aad3943a312b57432b91ff68be1000000000000000000000000000000000149704960cccf9d5ea414c73871e896b1d4cf0a946b0db72f5f2c5df98d2ec4f3adbbc14c78047961bc9620cb6cfb5900000000000000000000000000000000140c5d25e534fb1bfdc19ba4cecaabe619f6e0cd3d60b0f17dafd7bcd27b286d4f4477d00c5e1af22ee1a0c67fbf177c00000000000000000000000000000000029a1727041590b8459890de736df15c00d80ab007c3aee692ddcdf75790c9806d198e9f4502bec2f0a623491c3f877d0000000000000000000000000000000008a94c98baa9409151030d4fae2bd4a64c6f11ea3c99b9661fdaed226b9a7c2a7d609be34afda5d18b8911b6e015bf494c51f97bcdda93904ae26991b471e9ea942e2b5b8ed26055da11c58bc7b5002a000000000000000000000000000000001156d478661337478ab0cbc877a99d9e4d9824a2b3f605d41404d6b557b3ffabbf42635b0bbcb854cf9ed8b8637561a8000000000000000000000000000000001147ed317d5642e699787a7b47e6795c9a8943a34a694007e44f8654ba96390cf19f010dcf695e22c21874022c6ce291000000000000000000000000000000000c6dccdf920fd5e7fae284115511952633744c6ad94120d9cae6acda8a7c23c48bd912cba6c38de5159587e1e6cad519000000000000000000000000000000001944227d462bc2e5dcc6f6db0f83dad411ba8895262836f975b2b91e06fd0e2138862162acc04e9e65050b34ccbd1a4e8964d5867927bc3e35a0b4c457482373969bff5edff8a781d65573e07fd87b890000000000000000000000000000000019c31e3ab8cc9c920aa8f56371f133b6cb8d7b0b74b23c0c7201aca79e5ae69dc01f1f74d2492dcb081895b17d106b4e000000000000000000000000000000001789b0d371bd63077ccde3dbbebf3531368feb775bced187fb31cc6821481664600978e323ff21085b8c08e0f21daf72000000000000000000000000000000000009eacfe8f4a2a9bae6573424d07f42bd6af8a9d55f71476a7e3c7a4b2b898550c1e72ec13afd4eff22421a03af1d31000000000000000000000000000000000410bd4ea74dcfa33f2976aa1b571c67cbb596ab10f76a8aaf4548f1097e55b3373bff02683f806cb84e1e0e877819e2787c38b944eadbd03fd3187f450571740f6cd00e5b2e560165846eb800e5c94400000000000000000000000000000000147f09986691f2e57073378e8bfd58804241eed7934f6adfe6d0a6bac4da0b738495778a303e52113e1c80e698476d50000000000000000000000000000000000762348b84c92a8ca6de319cf1f8f11db296a71b90fe13e1e4bcd25903829c00a5d2ad4b1c8d98c37eaad7e042ab023d0000000000000000000000000000000011d1d94530d4a2daf0e902a5c3382cd135938557f94b04bccea5e16ea089c5e020e13524c854a316662bd68784fe31f300000000000000000000000000000000070828522bec75b6a492fd9bca7b54dac6fbbf4f0bc3179d312bb65c647439e3868e4d5b21af5a64c93aeee8a9b7e46eaaee7ae2a237e8e53560c79e7baa9adf9c00a0ea4d6f514e7a6832eb15cef1e1000000000000000000000000000000000690a0869204c8dced5ba0ce13554b2703a3f18afb8fa8fa1c457d79c58fdc25471ae85bafad52e506fc1917fc3becff0000000000000000000000000000000010f7dbb16f8571ede1cec79e3f9ea03ae6468d7285984713f19607f5cab902b9a6b7cbcfd900be5c2e407cc093ea0e6700000000000000000000000000000000151caf87968433cb1f85fc1854c57049be22c26497a86bfbd66a2b3af121d894dba8004a17c6ff96a5843c2719fa32d10000000000000000000000000000000011f0270f2b039409f70392879bcc2c67c836c100cf9883d3dc48d7adbcd52037d270539e863a951acd47ecaa1ca4db12dac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c0000000000000000000000000000000017fae043c8fd4c520a90d4a6bd95f5b0484acc279b899e7b1d8f7f7831cc6ba37cd5965c4dc674768f5805842d433af30000000000000000000000000000000008ddd7b41b8fa4d29fb931830f29b46f4015ec202d51cb969d7c832aafc0995c875cd45eff4a083e2d5ecb5ad185b64f0000000000000000000000000000000015d384ab7e52420b83a69827257cb52b00f0199ed2240a142812b46cf67e92b99942ac59fb9f9efd7dd822f5a36c799f00000000000000000000000000000000074b3a16a9cc4be9da0ac8e2e7003d9c1ec89244d2c33441b31af76716cce439f805843a9a44701203231efdca551d5bbb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd108000000000000000000000000000000000e25365988664e8b6ade2e5a40da49c11ff1e084cc0f8dca51f0d0578555d39e3617c8cadb2abc2633b28c5895ab0a9e00000000000000000000000000000000169f5fd768152169c403475dee475576fd2cc3788179453b0039ff3cb1b7a5a0fff8f82d03f56e65cad579218486c3b600000000000000000000000000000000087ccd7f92032febc1f75c7115111ede4acbb2e429cbccf3959524d0b79c449d431ff65485e1aecb442b53fec80ecb4000000000000000000000000000000000135d63f264360003b2eb28f126c6621a40088c6eb15acc4aea89d6068e9d5a47f842aa4b4300f5cda5cc5831edb81596fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f818767200000000000000000000000000000000159da74f15e4c614b418997f81a1b8a3d9eb8dd80d94b5bad664bff271bb0f2d8f3c4ceb947dc6300d5003a2f7d7a829000000000000000000000000000000000cdd4d1d4666f385dd54052cf5c1966328403251bebb29f0d553a9a96b5ade350c8493270e9b5282d8a06f9fa8d7b1d900000000000000000000000000000000189f8d3c94fdaa72cc67a7f93d35f91e22206ff9e97eed9601196c28d45b69c802ae92bcbf582754717b0355e08d37c000000000000000000000000000000000054b0a282610f108fc7f6736b8c22c8778d082bf4b0d0abca5a228198eba6a868910dd5c5c440036968e977955054196b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea000000000000000000000000000000000f29b0d2b6e3466668e1328048e8dbc782c1111ab8cbe718c85d58ded992d97ca8ba20b9d048feb6ed0aa1b4139d02d3000000000000000000000000000000000d1f0dae940b99fbfc6e4a58480cac8c4e6b2fe33ce6f39c7ac1671046ce94d9e16cba2bb62c6749ef73d45bea21501a000000000000000000000000000000001902ccece1c0c763fd06934a76d1f2f056563ae6d8592bafd589cfebd6f057726fd908614ccd6518a21c66ecc2f78b660000000000000000000000000000000017f6b113f8872c3187d20b0c765d73b850b54244a719cf461fb318796c0b8f310b5490959f9d9187f99c8ed3e25e42a93b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c76000000000000000000000000000000000576b8cf1e69efdc277465c344cadf7f8cceffacbeca83821f3ff81717308b97f4ac046f1926e7c2eb42677d7afc257c000000000000000000000000000000000cc1524531e96f3c00e4250dd351aedb5a4c3184aff52ec8c13d470068f5967f3674fe173ee239933e67501a9decc6680000000000000000000000000000000001610cfcaea414c241b44cf6f3cc319dcb51d6b8de29c8a6869ff7c1ebb7b747d881e922b42e8fab96bde7cf23e8e4cd0000000000000000000000000000000017d4444dc8b6893b681cf10dac8169054f9d2f61d3dd5fd785ae7afa49d18ebbde9ce8dde5641adc6b38173173459836dd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257c000000000000000000000000000000000ca8f961f86ee6c46fc88fbbf721ba760186f13cd4cce743f19dc60a89fd985cb3feee34dcc4656735a326f515a729e400000000000000000000000000000000174baf466b809b1155d524050f7ee58c7c5cf728c674e0ce549f5551047a4479ca15bdf69b403b03fa74eb1b26bbff6c0000000000000000000000000000000000e8c8b587c171b1b292779abfef57202ed29e7fe94ade9634ec5a2b3b4692a4f3c15468e3f6418b144674be70780d5b000000000000000000000000000000001865e99cf97d88bdf56dae32314eb32295c39a1e755cd7d1478bea8520b9ff21c39b683b92ae15568420c390c42b123b7010b134989c8368c7f831f9dd9f9a890e2c1435681107414f2e8637153bbf6a0000000000000000000000000000000017eccd446f10018219a1bd111b8786cf9febd49f9e7e754e82dd155ead59b819f0f20e42f4635d5044ec5d550d847623000000000000000000000000000000000403969d2b8f914ff2ea3bf902782642e2c6157bd2a343acf60ff9125b48b558d990a74c6d4d6398e7a3cc2a16037346000000000000000000000000000000000bd45f61f142bd78619fb520715320eb5e6ebafa8b078ce796ba62fe1a549d5fb9df57e92d8d2795988eb6ae18cf9d9300000000000000000000000000000000097db1314e064b8e670ec286958f17065bce644cf240ab1b1b220504560d36a0b43fc18453ff3a2bb315e219965f5bd394c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a65905400000000000000000000000000000000018244ab39a716e252cbfb986c7958b371e29ea9190010d1f5e1cfdb6ce4822d4055c37cd411fc9a0c46d728f2c13ed00000000000000000000000000000000001985d3c667c8d68c9adb92bdc7a8af959c17146544997d97116120a0f55366bd7ad7ffa28d93ee51222ff9222779675000000000000000000000000000000000c70fd4e3c8f2a451f83fb6c046431b38251b7bae44cf8d36df69a03e2d3ce6137498523fcf0bcf29b5d69e8f265e24d00000000000000000000000000000000047b9163a218f7654a72e0d7c651a2cf7fd95e9784a59e0bf119d081de6c0465d374a55fbc1eff9828c9fd29abf4c4bdb3682accc3939283b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746,,,invalid input parameters, Point is not on curve -00000000000000000000000000000000197bfd0342bbc8bee2beced2f173e1a87be576379b343e93232d6cef98d84b1d696e5612ff283ce2cfdccb2cfb65fa0c00000000000000000000000000000000184e811f55e6f9d84d77d2f79102fd7ea7422f4759df5bf7f6331d550245e3f1bcf6a30e3b29110d85e0ca16f9f6ae7a000000000000000000000000000000000f10e1eb3c1e53d2ad9cf2d398b2dc22c5842fab0a74b174f691a7e914975da3564d835cd7d2982815b8ac57f507348f000000000000000000000000000000000767d1c453890f1b9110fda82f5815c27281aba3f026ee868e4176a0654feea41a96575e0c4d58a14dbfbcc05b5010b1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000103121a2ceaae586d240843a398967325f8eb5a93e8fea99b62b9f88d8556c80dd726a4b30e84a36eeabaf3592937f2700000000000000000000000000000000086b990f3da2aeac0a36143b7d7c824428215140db1bb859338764cb58458f081d92664f9053b50b3fbd2e4723121b68000000000000000000000000000000000f9e7ba9a86a8f7624aa2b42dcc8772e1af4ae115685e60abc2c9b90242167acef3d0be4050bf935eed7c3b6fc7ba77e000000000000000000000000000000000d22c3652d0dc6f0fc9316e14268477c2049ef772e852108d269d9c38dba1d4802e8dae479818184c08f9a569d8784510000000000000000000000000000000000000000000000000000000000000002,,,Point is not in the expected subgroup +000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220e0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2dfb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e0000000000000000000000000000000018c0ada6351b70661f053365deae56910798bd2ace6e2bf6ba4192d1a229967f6af6ca1c9a8a11ebc0a232344ee0f6d6000000000000000000000000000000000cc70a587f4652039d8117b6103858adcd9728f6aebe230578389a62da0042b7623b1c0436734f463cfdd187d20903240000000000000000000000000000000009f50bd7beedb23328818f9ffdafdb6da6a4dd80c5a9048ab8b154df3cad938ccede829f1156f769d9e149791e8e0cd900000000000000000000000000000000079ba50d2511631b20b6d6f3841e616e9d11b68ec3368cd60129d9d4787ab56c4e9145a38927e51c9cd6271d493d93884d0e25bf3f6fc9f4da25d21fdc71773f1947b7a8a775b8177f7eca990b05b71d0000000000000000000000000000000003632695b09dbf86163909d2bb25995b36ad1d137cf252860fd4bb6c95749e19eb0c1383e9d2f93f2791cb0cf6c8ed9d000000000000000000000000000000001688a855609b0bbff4452d146396558ff18777f329fd4f76a96859dabfc6a6f6977c2496280dbe3b1f8923990c1d6407000000000000000000000000000000000c8567fee05d05af279adc67179468a29d7520b067dbb348ee315a99504f70a206538b81a457cce855f4851ad48b7e80000000000000000000000000000000001238dcdfa80ea46e1500026ea5feadb421de4409f4992ffbf5ae59fa67fd82f38452642a50261b849e74b4a33eed70cc973f40c12c92b703d7b7848ef8b4466d40823aad3943a312b57432b91ff68be1000000000000000000000000000000000149704960cccf9d5ea414c73871e896b1d4cf0a946b0db72f5f2c5df98d2ec4f3adbbc14c78047961bc9620cb6cfb5900000000000000000000000000000000140c5d25e534fb1bfdc19ba4cecaabe619f6e0cd3d60b0f17dafd7bcd27b286d4f4477d00c5e1af22ee1a0c67fbf177c00000000000000000000000000000000029a1727041590b8459890de736df15c00d80ab007c3aee692ddcdf75790c9806d198e9f4502bec2f0a623491c3f877d0000000000000000000000000000000008a94c98baa9409151030d4fae2bd4a64c6f11ea3c99b9661fdaed226b9a7c2a7d609be34afda5d18b8911b6e015bf494c51f97bcdda93904ae26991b471e9ea942e2b5b8ed26055da11c58bc7b5002a000000000000000000000000000000001156d478661337478ab0cbc877a99d9e4d9824a2b3f605d41404d6b557b3ffabbf42635b0bbcb854cf9ed8b8637561a8000000000000000000000000000000001147ed317d5642e699787a7b47e6795c9a8943a34a694007e44f8654ba96390cf19f010dcf695e22c21874022c6ce291000000000000000000000000000000000c6dccdf920fd5e7fae284115511952633744c6ad94120d9cae6acda8a7c23c48bd912cba6c38de5159587e1e6cad519000000000000000000000000000000001944227d462bc2e5dcc6f6db0f83dad411ba8895262836f975b2b91e06fd0e2138862162acc04e9e65050b34ccbd1a4e8964d5867927bc3e35a0b4c457482373969bff5edff8a781d65573e07fd87b890000000000000000000000000000000019c31e3ab8cc9c920aa8f56371f133b6cb8d7b0b74b23c0c7201aca79e5ae69dc01f1f74d2492dcb081895b17d106b4e000000000000000000000000000000001789b0d371bd63077ccde3dbbebf3531368feb775bced187fb31cc6821481664600978e323ff21085b8c08e0f21daf72000000000000000000000000000000000009eacfe8f4a2a9bae6573424d07f42bd6af8a9d55f71476a7e3c7a4b2b898550c1e72ec13afd4eff22421a03af1d31000000000000000000000000000000000410bd4ea74dcfa33f2976aa1b571c67cbb596ab10f76a8aaf4548f1097e55b3373bff02683f806cb84e1e0e877819e2787c38b944eadbd03fd3187f450571740f6cd00e5b2e560165846eb800e5c94400000000000000000000000000000000147f09986691f2e57073378e8bfd58804241eed7934f6adfe6d0a6bac4da0b738495778a303e52113e1c80e698476d50000000000000000000000000000000000762348b84c92a8ca6de319cf1f8f11db296a71b90fe13e1e4bcd25903829c00a5d2ad4b1c8d98c37eaad7e042ab023d0000000000000000000000000000000011d1d94530d4a2daf0e902a5c3382cd135938557f94b04bccea5e16ea089c5e020e13524c854a316662bd68784fe31f300000000000000000000000000000000070828522bec75b6a492fd9bca7b54dac6fbbf4f0bc3179d312bb65c647439e3868e4d5b21af5a64c93aeee8a9b7e46eaaee7ae2a237e8e53560c79e7baa9adf9c00a0ea4d6f514e7a6832eb15cef1e1000000000000000000000000000000000690a0869204c8dced5ba0ce13554b2703a3f18afb8fa8fa1c457d79c58fdc25471ae85bafad52e506fc1917fc3becff0000000000000000000000000000000010f7dbb16f8571ede1cec79e3f9ea03ae6468d7285984713f19607f5cab902b9a6b7cbcfd900be5c2e407cc093ea0e6700000000000000000000000000000000151caf87968433cb1f85fc1854c57049be22c26497a86bfbd66a2b3af121d894dba8004a17c6ff96a5843c2719fa32d10000000000000000000000000000000011f0270f2b039409f70392879bcc2c67c836c100cf9883d3dc48d7adbcd52037d270539e863a951acd47ecaa1ca4db12dac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c0000000000000000000000000000000017fae043c8fd4c520a90d4a6bd95f5b0484acc279b899e7b1d8f7f7831cc6ba37cd5965c4dc674768f5805842d433af30000000000000000000000000000000008ddd7b41b8fa4d29fb931830f29b46f4015ec202d51cb969d7c832aafc0995c875cd45eff4a083e2d5ecb5ad185b64f0000000000000000000000000000000015d384ab7e52420b83a69827257cb52b00f0199ed2240a142812b46cf67e92b99942ac59fb9f9efd7dd822f5a36c799f00000000000000000000000000000000074b3a16a9cc4be9da0ac8e2e7003d9c1ec89244d2c33441b31af76716cce439f805843a9a44701203231efdca551d5bbb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd108000000000000000000000000000000000e25365988664e8b6ade2e5a40da49c11ff1e084cc0f8dca51f0d0578555d39e3617c8cadb2abc2633b28c5895ab0a9e00000000000000000000000000000000169f5fd768152169c403475dee475576fd2cc3788179453b0039ff3cb1b7a5a0fff8f82d03f56e65cad579218486c3b600000000000000000000000000000000087ccd7f92032febc1f75c7115111ede4acbb2e429cbccf3959524d0b79c449d431ff65485e1aecb442b53fec80ecb4000000000000000000000000000000000135d63f264360003b2eb28f126c6621a40088c6eb15acc4aea89d6068e9d5a47f842aa4b4300f5cda5cc5831edb81596fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f818767200000000000000000000000000000000159da74f15e4c614b418997f81a1b8a3d9eb8dd80d94b5bad664bff271bb0f2d8f3c4ceb947dc6300d5003a2f7d7a829000000000000000000000000000000000cdd4d1d4666f385dd54052cf5c1966328403251bebb29f0d553a9a96b5ade350c8493270e9b5282d8a06f9fa8d7b1d900000000000000000000000000000000189f8d3c94fdaa72cc67a7f93d35f91e22206ff9e97eed9601196c28d45b69c802ae92bcbf582754717b0355e08d37c000000000000000000000000000000000054b0a282610f108fc7f6736b8c22c8778d082bf4b0d0abca5a228198eba6a868910dd5c5c440036968e977955054196b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea000000000000000000000000000000000f29b0d2b6e3466668e1328048e8dbc782c1111ab8cbe718c85d58ded992d97ca8ba20b9d048feb6ed0aa1b4139d02d3000000000000000000000000000000000d1f0dae940b99fbfc6e4a58480cac8c4e6b2fe33ce6f39c7ac1671046ce94d9e16cba2bb62c6749ef73d45bea21501a000000000000000000000000000000001902ccece1c0c763fd06934a76d1f2f056563ae6d8592bafd589cfebd6f057726fd908614ccd6518a21c66ecc2f78b660000000000000000000000000000000017f6b113f8872c3187d20b0c765d73b850b54244a719cf461fb318796c0b8f310b5490959f9d9187f99c8ed3e25e42a93b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c76000000000000000000000000000000000576b8cf1e69efdc277465c344cadf7f8cceffacbeca83821f3ff81717308b97f4ac046f1926e7c2eb42677d7afc257c000000000000000000000000000000000cc1524531e96f3c00e4250dd351aedb5a4c3184aff52ec8c13d470068f5967f3674fe173ee239933e67501a9decc6680000000000000000000000000000000001610cfcaea414c241b44cf6f3cc319dcb51d6b8de29c8a6869ff7c1ebb7b747d881e922b42e8fab96bde7cf23e8e4cd0000000000000000000000000000000017d4444dc8b6893b681cf10dac8169054f9d2f61d3dd5fd785ae7afa49d18ebbde9ce8dde5641adc6b38173173459836dd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257c000000000000000000000000000000000ca8f961f86ee6c46fc88fbbf721ba760186f13cd4cce743f19dc60a89fd985cb3feee34dcc4656735a326f515a729e400000000000000000000000000000000174baf466b809b1155d524050f7ee58c7c5cf728c674e0ce549f5551047a4479ca15bdf69b403b03fa74eb1b26bbff6c0000000000000000000000000000000000e8c8b587c171b1b292779abfef57202ed29e7fe94ade9634ec5a2b3b4692a4f3c15468e3f6418b144674be70780d5b000000000000000000000000000000001865e99cf97d88bdf56dae32314eb32295c39a1e755cd7d1478bea8520b9ff21c39b683b92ae15568420c390c42b123b7010b134989c8368c7f831f9dd9f9a890e2c1435681107414f2e8637153bbf6a0000000000000000000000000000000017eccd446f10018219a1bd111b8786cf9febd49f9e7e754e82dd155ead59b819f0f20e42f4635d5044ec5d550d847623000000000000000000000000000000000403969d2b8f914ff2ea3bf902782642e2c6157bd2a343acf60ff9125b48b558d990a74c6d4d6398e7a3cc2a16037346000000000000000000000000000000000bd45f61f142bd78619fb520715320eb5e6ebafa8b078ce796ba62fe1a549d5fb9df57e92d8d2795988eb6ae18cf9d9300000000000000000000000000000000097db1314e064b8e670ec286958f17065bce644cf240ab1b1b220504560d36a0b43fc18453ff3a2bb315e219965f5bd394c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a65905400000000000000000000000000000000018244ab39a716e252cbfb986c7958b371e29ea9190010d1f5e1cfdb6ce4822d4055c37cd411fc9a0c46d728f2c13ecf0000000000000000000000000000000001985d3c667c8d68c9adb92bdc7a8af959c17146544997d97116120a0f55366bd7ad7ffa28d93ee51222ff9222779675000000000000000000000000000000000c70fd4e3c8f2a451f83fb6c046431b38251b7bae44cf8d36df69a03e2d3ce6137498523fcf0bcf29b5d69e8f265e24d00000000000000000000000000000000047b9163a218f7654a72e0d7c651a2cf7fd95e9784a59e0bf119d081de6c0465d374a55fbc1eff9828c9fd29abf4c4bdb3682accc3939283b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746,,,invalid input parameters, invalid input length for G2 multiplication +0000000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220e0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2dfb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e0000000000000000000000000000000018c0ada6351b70661f053365deae56910798bd2ace6e2bf6ba4192d1a229967f6af6ca1c9a8a11ebc0a232344ee0f6d6000000000000000000000000000000000cc70a587f4652039d8117b6103858adcd9728f6aebe230578389a62da0042b7623b1c0436734f463cfdd187d20903240000000000000000000000000000000009f50bd7beedb23328818f9ffdafdb6da6a4dd80c5a9048ab8b154df3cad938ccede829f1156f769d9e149791e8e0cd900000000000000000000000000000000079ba50d2511631b20b6d6f3841e616e9d11b68ec3368cd60129d9d4787ab56c4e9145a38927e51c9cd6271d493d93884d0e25bf3f6fc9f4da25d21fdc71773f1947b7a8a775b8177f7eca990b05b71d0000000000000000000000000000000003632695b09dbf86163909d2bb25995b36ad1d137cf252860fd4bb6c95749e19eb0c1383e9d2f93f2791cb0cf6c8ed9d000000000000000000000000000000001688a855609b0bbff4452d146396558ff18777f329fd4f76a96859dabfc6a6f6977c2496280dbe3b1f8923990c1d6407000000000000000000000000000000000c8567fee05d05af279adc67179468a29d7520b067dbb348ee315a99504f70a206538b81a457cce855f4851ad48b7e80000000000000000000000000000000001238dcdfa80ea46e1500026ea5feadb421de4409f4992ffbf5ae59fa67fd82f38452642a50261b849e74b4a33eed70cc973f40c12c92b703d7b7848ef8b4466d40823aad3943a312b57432b91ff68be1000000000000000000000000000000000149704960cccf9d5ea414c73871e896b1d4cf0a946b0db72f5f2c5df98d2ec4f3adbbc14c78047961bc9620cb6cfb5900000000000000000000000000000000140c5d25e534fb1bfdc19ba4cecaabe619f6e0cd3d60b0f17dafd7bcd27b286d4f4477d00c5e1af22ee1a0c67fbf177c00000000000000000000000000000000029a1727041590b8459890de736df15c00d80ab007c3aee692ddcdf75790c9806d198e9f4502bec2f0a623491c3f877d0000000000000000000000000000000008a94c98baa9409151030d4fae2bd4a64c6f11ea3c99b9661fdaed226b9a7c2a7d609be34afda5d18b8911b6e015bf494c51f97bcdda93904ae26991b471e9ea942e2b5b8ed26055da11c58bc7b5002a000000000000000000000000000000001156d478661337478ab0cbc877a99d9e4d9824a2b3f605d41404d6b557b3ffabbf42635b0bbcb854cf9ed8b8637561a8000000000000000000000000000000001147ed317d5642e699787a7b47e6795c9a8943a34a694007e44f8654ba96390cf19f010dcf695e22c21874022c6ce291000000000000000000000000000000000c6dccdf920fd5e7fae284115511952633744c6ad94120d9cae6acda8a7c23c48bd912cba6c38de5159587e1e6cad519000000000000000000000000000000001944227d462bc2e5dcc6f6db0f83dad411ba8895262836f975b2b91e06fd0e2138862162acc04e9e65050b34ccbd1a4e8964d5867927bc3e35a0b4c457482373969bff5edff8a781d65573e07fd87b890000000000000000000000000000000019c31e3ab8cc9c920aa8f56371f133b6cb8d7b0b74b23c0c7201aca79e5ae69dc01f1f74d2492dcb081895b17d106b4e000000000000000000000000000000001789b0d371bd63077ccde3dbbebf3531368feb775bced187fb31cc6821481664600978e323ff21085b8c08e0f21daf72000000000000000000000000000000000009eacfe8f4a2a9bae6573424d07f42bd6af8a9d55f71476a7e3c7a4b2b898550c1e72ec13afd4eff22421a03af1d31000000000000000000000000000000000410bd4ea74dcfa33f2976aa1b571c67cbb596ab10f76a8aaf4548f1097e55b3373bff02683f806cb84e1e0e877819e2787c38b944eadbd03fd3187f450571740f6cd00e5b2e560165846eb800e5c94400000000000000000000000000000000147f09986691f2e57073378e8bfd58804241eed7934f6adfe6d0a6bac4da0b738495778a303e52113e1c80e698476d50000000000000000000000000000000000762348b84c92a8ca6de319cf1f8f11db296a71b90fe13e1e4bcd25903829c00a5d2ad4b1c8d98c37eaad7e042ab023d0000000000000000000000000000000011d1d94530d4a2daf0e902a5c3382cd135938557f94b04bccea5e16ea089c5e020e13524c854a316662bd68784fe31f300000000000000000000000000000000070828522bec75b6a492fd9bca7b54dac6fbbf4f0bc3179d312bb65c647439e3868e4d5b21af5a64c93aeee8a9b7e46eaaee7ae2a237e8e53560c79e7baa9adf9c00a0ea4d6f514e7a6832eb15cef1e1000000000000000000000000000000000690a0869204c8dced5ba0ce13554b2703a3f18afb8fa8fa1c457d79c58fdc25471ae85bafad52e506fc1917fc3becff0000000000000000000000000000000010f7dbb16f8571ede1cec79e3f9ea03ae6468d7285984713f19607f5cab902b9a6b7cbcfd900be5c2e407cc093ea0e6700000000000000000000000000000000151caf87968433cb1f85fc1854c57049be22c26497a86bfbd66a2b3af121d894dba8004a17c6ff96a5843c2719fa32d10000000000000000000000000000000011f0270f2b039409f70392879bcc2c67c836c100cf9883d3dc48d7adbcd52037d270539e863a951acd47ecaa1ca4db12dac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c0000000000000000000000000000000017fae043c8fd4c520a90d4a6bd95f5b0484acc279b899e7b1d8f7f7831cc6ba37cd5965c4dc674768f5805842d433af30000000000000000000000000000000008ddd7b41b8fa4d29fb931830f29b46f4015ec202d51cb969d7c832aafc0995c875cd45eff4a083e2d5ecb5ad185b64f0000000000000000000000000000000015d384ab7e52420b83a69827257cb52b00f0199ed2240a142812b46cf67e92b99942ac59fb9f9efd7dd822f5a36c799f00000000000000000000000000000000074b3a16a9cc4be9da0ac8e2e7003d9c1ec89244d2c33441b31af76716cce439f805843a9a44701203231efdca551d5bbb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd108000000000000000000000000000000000e25365988664e8b6ade2e5a40da49c11ff1e084cc0f8dca51f0d0578555d39e3617c8cadb2abc2633b28c5895ab0a9e00000000000000000000000000000000169f5fd768152169c403475dee475576fd2cc3788179453b0039ff3cb1b7a5a0fff8f82d03f56e65cad579218486c3b600000000000000000000000000000000087ccd7f92032febc1f75c7115111ede4acbb2e429cbccf3959524d0b79c449d431ff65485e1aecb442b53fec80ecb4000000000000000000000000000000000135d63f264360003b2eb28f126c6621a40088c6eb15acc4aea89d6068e9d5a47f842aa4b4300f5cda5cc5831edb81596fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f818767200000000000000000000000000000000159da74f15e4c614b418997f81a1b8a3d9eb8dd80d94b5bad664bff271bb0f2d8f3c4ceb947dc6300d5003a2f7d7a829000000000000000000000000000000000cdd4d1d4666f385dd54052cf5c1966328403251bebb29f0d553a9a96b5ade350c8493270e9b5282d8a06f9fa8d7b1d900000000000000000000000000000000189f8d3c94fdaa72cc67a7f93d35f91e22206ff9e97eed9601196c28d45b69c802ae92bcbf582754717b0355e08d37c000000000000000000000000000000000054b0a282610f108fc7f6736b8c22c8778d082bf4b0d0abca5a228198eba6a868910dd5c5c440036968e977955054196b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea000000000000000000000000000000000f29b0d2b6e3466668e1328048e8dbc782c1111ab8cbe718c85d58ded992d97ca8ba20b9d048feb6ed0aa1b4139d02d3000000000000000000000000000000000d1f0dae940b99fbfc6e4a58480cac8c4e6b2fe33ce6f39c7ac1671046ce94d9e16cba2bb62c6749ef73d45bea21501a000000000000000000000000000000001902ccece1c0c763fd06934a76d1f2f056563ae6d8592bafd589cfebd6f057726fd908614ccd6518a21c66ecc2f78b660000000000000000000000000000000017f6b113f8872c3187d20b0c765d73b850b54244a719cf461fb318796c0b8f310b5490959f9d9187f99c8ed3e25e42a93b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c76000000000000000000000000000000000576b8cf1e69efdc277465c344cadf7f8cceffacbeca83821f3ff81717308b97f4ac046f1926e7c2eb42677d7afc257c000000000000000000000000000000000cc1524531e96f3c00e4250dd351aedb5a4c3184aff52ec8c13d470068f5967f3674fe173ee239933e67501a9decc6680000000000000000000000000000000001610cfcaea414c241b44cf6f3cc319dcb51d6b8de29c8a6869ff7c1ebb7b747d881e922b42e8fab96bde7cf23e8e4cd0000000000000000000000000000000017d4444dc8b6893b681cf10dac8169054f9d2f61d3dd5fd785ae7afa49d18ebbde9ce8dde5641adc6b38173173459836dd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257c000000000000000000000000000000000ca8f961f86ee6c46fc88fbbf721ba760186f13cd4cce743f19dc60a89fd985cb3feee34dcc4656735a326f515a729e400000000000000000000000000000000174baf466b809b1155d524050f7ee58c7c5cf728c674e0ce549f5551047a4479ca15bdf69b403b03fa74eb1b26bbff6c0000000000000000000000000000000000e8c8b587c171b1b292779abfef57202ed29e7fe94ade9634ec5a2b3b4692a4f3c15468e3f6418b144674be70780d5b000000000000000000000000000000001865e99cf97d88bdf56dae32314eb32295c39a1e755cd7d1478bea8520b9ff21c39b683b92ae15568420c390c42b123b7010b134989c8368c7f831f9dd9f9a890e2c1435681107414f2e8637153bbf6a0000000000000000000000000000000017eccd446f10018219a1bd111b8786cf9febd49f9e7e754e82dd155ead59b819f0f20e42f4635d5044ec5d550d847623000000000000000000000000000000000403969d2b8f914ff2ea3bf902782642e2c6157bd2a343acf60ff9125b48b558d990a74c6d4d6398e7a3cc2a16037346000000000000000000000000000000000bd45f61f142bd78619fb520715320eb5e6ebafa8b078ce796ba62fe1a549d5fb9df57e92d8d2795988eb6ae18cf9d9300000000000000000000000000000000097db1314e064b8e670ec286958f17065bce644cf240ab1b1b220504560d36a0b43fc18453ff3a2bb315e219965f5bd394c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a65905400000000000000000000000000000000018244ab39a716e252cbfb986c7958b371e29ea9190010d1f5e1cfdb6ce4822d4055c37cd411fc9a0c46d728f2c13ecf0000000000000000000000000000000001985d3c667c8d68c9adb92bdc7a8af959c17146544997d97116120a0f55366bd7ad7ffa28d93ee51222ff9222779675000000000000000000000000000000000c70fd4e3c8f2a451f83fb6c046431b38251b7bae44cf8d36df69a03e2d3ce6137498523fcf0bcf29b5d69e8f265e24d00000000000000000000000000000000047b9163a218f7654a72e0d7c651a2cf7fd95e9784a59e0bf119d081de6c0465d374a55fbc1eff9828c9fd29abf4c4bdb3682accc3939283b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746,,,invalid input parameters, invalid input length for G2 multiplication +,,,invalid input parameters, invalid number of pairs +00000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220f0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2dfb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e0000000000000000000000000000000018c0ada6351b70661f053365deae56910798bd2ace6e2bf6ba4192d1a229967f6af6ca1c9a8a11ebc0a232344ee0f6d6000000000000000000000000000000000cc70a587f4652039d8117b6103858adcd9728f6aebe230578389a62da0042b7623b1c0436734f463cfdd187d20903240000000000000000000000000000000009f50bd7beedb23328818f9ffdafdb6da6a4dd80c5a9048ab8b154df3cad938ccede829f1156f769d9e149791e8e0cd900000000000000000000000000000000079ba50d2511631b20b6d6f3841e616e9d11b68ec3368cd60129d9d4787ab56c4e9145a38927e51c9cd6271d493d93884d0e25bf3f6fc9f4da25d21fdc71773f1947b7a8a775b8177f7eca990b05b71d0000000000000000000000000000000003632695b09dbf86163909d2bb25995b36ad1d137cf252860fd4bb6c95749e19eb0c1383e9d2f93f2791cb0cf6c8ed9d000000000000000000000000000000001688a855609b0bbff4452d146396558ff18777f329fd4f76a96859dabfc6a6f6977c2496280dbe3b1f8923990c1d6407000000000000000000000000000000000c8567fee05d05af279adc67179468a29d7520b067dbb348ee315a99504f70a206538b81a457cce855f4851ad48b7e80000000000000000000000000000000001238dcdfa80ea46e1500026ea5feadb421de4409f4992ffbf5ae59fa67fd82f38452642a50261b849e74b4a33eed70cc973f40c12c92b703d7b7848ef8b4466d40823aad3943a312b57432b91ff68be1000000000000000000000000000000000149704960cccf9d5ea414c73871e896b1d4cf0a946b0db72f5f2c5df98d2ec4f3adbbc14c78047961bc9620cb6cfb5900000000000000000000000000000000140c5d25e534fb1bfdc19ba4cecaabe619f6e0cd3d60b0f17dafd7bcd27b286d4f4477d00c5e1af22ee1a0c67fbf177c00000000000000000000000000000000029a1727041590b8459890de736df15c00d80ab007c3aee692ddcdf75790c9806d198e9f4502bec2f0a623491c3f877d0000000000000000000000000000000008a94c98baa9409151030d4fae2bd4a64c6f11ea3c99b9661fdaed226b9a7c2a7d609be34afda5d18b8911b6e015bf494c51f97bcdda93904ae26991b471e9ea942e2b5b8ed26055da11c58bc7b5002a000000000000000000000000000000001156d478661337478ab0cbc877a99d9e4d9824a2b3f605d41404d6b557b3ffabbf42635b0bbcb854cf9ed8b8637561a8000000000000000000000000000000001147ed317d5642e699787a7b47e6795c9a8943a34a694007e44f8654ba96390cf19f010dcf695e22c21874022c6ce291000000000000000000000000000000000c6dccdf920fd5e7fae284115511952633744c6ad94120d9cae6acda8a7c23c48bd912cba6c38de5159587e1e6cad519000000000000000000000000000000001944227d462bc2e5dcc6f6db0f83dad411ba8895262836f975b2b91e06fd0e2138862162acc04e9e65050b34ccbd1a4e8964d5867927bc3e35a0b4c457482373969bff5edff8a781d65573e07fd87b890000000000000000000000000000000019c31e3ab8cc9c920aa8f56371f133b6cb8d7b0b74b23c0c7201aca79e5ae69dc01f1f74d2492dcb081895b17d106b4e000000000000000000000000000000001789b0d371bd63077ccde3dbbebf3531368feb775bced187fb31cc6821481664600978e323ff21085b8c08e0f21daf72000000000000000000000000000000000009eacfe8f4a2a9bae6573424d07f42bd6af8a9d55f71476a7e3c7a4b2b898550c1e72ec13afd4eff22421a03af1d31000000000000000000000000000000000410bd4ea74dcfa33f2976aa1b571c67cbb596ab10f76a8aaf4548f1097e55b3373bff02683f806cb84e1e0e877819e2787c38b944eadbd03fd3187f450571740f6cd00e5b2e560165846eb800e5c94400000000000000000000000000000000147f09986691f2e57073378e8bfd58804241eed7934f6adfe6d0a6bac4da0b738495778a303e52113e1c80e698476d50000000000000000000000000000000000762348b84c92a8ca6de319cf1f8f11db296a71b90fe13e1e4bcd25903829c00a5d2ad4b1c8d98c37eaad7e042ab023d0000000000000000000000000000000011d1d94530d4a2daf0e902a5c3382cd135938557f94b04bccea5e16ea089c5e020e13524c854a316662bd68784fe31f300000000000000000000000000000000070828522bec75b6a492fd9bca7b54dac6fbbf4f0bc3179d312bb65c647439e3868e4d5b21af5a64c93aeee8a9b7e46eaaee7ae2a237e8e53560c79e7baa9adf9c00a0ea4d6f514e7a6832eb15cef1e1000000000000000000000000000000000690a0869204c8dced5ba0ce13554b2703a3f18afb8fa8fa1c457d79c58fdc25471ae85bafad52e506fc1917fc3becff0000000000000000000000000000000010f7dbb16f8571ede1cec79e3f9ea03ae6468d7285984713f19607f5cab902b9a6b7cbcfd900be5c2e407cc093ea0e6700000000000000000000000000000000151caf87968433cb1f85fc1854c57049be22c26497a86bfbd66a2b3af121d894dba8004a17c6ff96a5843c2719fa32d10000000000000000000000000000000011f0270f2b039409f70392879bcc2c67c836c100cf9883d3dc48d7adbcd52037d270539e863a951acd47ecaa1ca4db12dac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c0000000000000000000000000000000017fae043c8fd4c520a90d4a6bd95f5b0484acc279b899e7b1d8f7f7831cc6ba37cd5965c4dc674768f5805842d433af30000000000000000000000000000000008ddd7b41b8fa4d29fb931830f29b46f4015ec202d51cb969d7c832aafc0995c875cd45eff4a083e2d5ecb5ad185b64f0000000000000000000000000000000015d384ab7e52420b83a69827257cb52b00f0199ed2240a142812b46cf67e92b99942ac59fb9f9efd7dd822f5a36c799f00000000000000000000000000000000074b3a16a9cc4be9da0ac8e2e7003d9c1ec89244d2c33441b31af76716cce439f805843a9a44701203231efdca551d5bbb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd108000000000000000000000000000000000e25365988664e8b6ade2e5a40da49c11ff1e084cc0f8dca51f0d0578555d39e3617c8cadb2abc2633b28c5895ab0a9e00000000000000000000000000000000169f5fd768152169c403475dee475576fd2cc3788179453b0039ff3cb1b7a5a0fff8f82d03f56e65cad579218486c3b600000000000000000000000000000000087ccd7f92032febc1f75c7115111ede4acbb2e429cbccf3959524d0b79c449d431ff65485e1aecb442b53fec80ecb4000000000000000000000000000000000135d63f264360003b2eb28f126c6621a40088c6eb15acc4aea89d6068e9d5a47f842aa4b4300f5cda5cc5831edb81596fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f818767200000000000000000000000000000000159da74f15e4c614b418997f81a1b8a3d9eb8dd80d94b5bad664bff271bb0f2d8f3c4ceb947dc6300d5003a2f7d7a829000000000000000000000000000000000cdd4d1d4666f385dd54052cf5c1966328403251bebb29f0d553a9a96b5ade350c8493270e9b5282d8a06f9fa8d7b1d900000000000000000000000000000000189f8d3c94fdaa72cc67a7f93d35f91e22206ff9e97eed9601196c28d45b69c802ae92bcbf582754717b0355e08d37c000000000000000000000000000000000054b0a282610f108fc7f6736b8c22c8778d082bf4b0d0abca5a228198eba6a868910dd5c5c440036968e977955054196b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea000000000000000000000000000000000f29b0d2b6e3466668e1328048e8dbc782c1111ab8cbe718c85d58ded992d97ca8ba20b9d048feb6ed0aa1b4139d02d3000000000000000000000000000000000d1f0dae940b99fbfc6e4a58480cac8c4e6b2fe33ce6f39c7ac1671046ce94d9e16cba2bb62c6749ef73d45bea21501a000000000000000000000000000000001902ccece1c0c763fd06934a76d1f2f056563ae6d8592bafd589cfebd6f057726fd908614ccd6518a21c66ecc2f78b660000000000000000000000000000000017f6b113f8872c3187d20b0c765d73b850b54244a719cf461fb318796c0b8f310b5490959f9d9187f99c8ed3e25e42a93b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c76000000000000000000000000000000000576b8cf1e69efdc277465c344cadf7f8cceffacbeca83821f3ff81717308b97f4ac046f1926e7c2eb42677d7afc257c000000000000000000000000000000000cc1524531e96f3c00e4250dd351aedb5a4c3184aff52ec8c13d470068f5967f3674fe173ee239933e67501a9decc6680000000000000000000000000000000001610cfcaea414c241b44cf6f3cc319dcb51d6b8de29c8a6869ff7c1ebb7b747d881e922b42e8fab96bde7cf23e8e4cd0000000000000000000000000000000017d4444dc8b6893b681cf10dac8169054f9d2f61d3dd5fd785ae7afa49d18ebbde9ce8dde5641adc6b38173173459836dd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257c000000000000000000000000000000000ca8f961f86ee6c46fc88fbbf721ba760186f13cd4cce743f19dc60a89fd985cb3feee34dcc4656735a326f515a729e400000000000000000000000000000000174baf466b809b1155d524050f7ee58c7c5cf728c674e0ce549f5551047a4479ca15bdf69b403b03fa74eb1b26bbff6c0000000000000000000000000000000000e8c8b587c171b1b292779abfef57202ed29e7fe94ade9634ec5a2b3b4692a4f3c15468e3f6418b144674be70780d5b000000000000000000000000000000001865e99cf97d88bdf56dae32314eb32295c39a1e755cd7d1478bea8520b9ff21c39b683b92ae15568420c390c42b123b7010b134989c8368c7f831f9dd9f9a890e2c1435681107414f2e8637153bbf6a0000000000000000000000000000000017eccd446f10018219a1bd111b8786cf9febd49f9e7e754e82dd155ead59b819f0f20e42f4635d5044ec5d550d847623000000000000000000000000000000000403969d2b8f914ff2ea3bf902782642e2c6157bd2a343acf60ff9125b48b558d990a74c6d4d6398e7a3cc2a16037346000000000000000000000000000000000bd45f61f142bd78619fb520715320eb5e6ebafa8b078ce796ba62fe1a549d5fb9df57e92d8d2795988eb6ae18cf9d9300000000000000000000000000000000097db1314e064b8e670ec286958f17065bce644cf240ab1b1b220504560d36a0b43fc18453ff3a2bb315e219965f5bd394c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a65905400000000000000000000000000000000018244ab39a716e252cbfb986c7958b371e29ea9190010d1f5e1cfdb6ce4822d4055c37cd411fc9a0c46d728f2c13ecf0000000000000000000000000000000001985d3c667c8d68c9adb92bdc7a8af959c17146544997d97116120a0f55366bd7ad7ffa28d93ee51222ff9222779675000000000000000000000000000000000c70fd4e3c8f2a451f83fb6c046431b38251b7bae44cf8d36df69a03e2d3ce6137498523fcf0bcf29b5d69e8f265e24d00000000000000000000000000000000047b9163a218f7654a72e0d7c651a2cf7fd95e9784a59e0bf119d081de6c0465d374a55fbc1eff9828c9fd29abf4c4bdb3682accc3939283b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746,,,invalid point: point is not on curve +00000000000000000000000000000000039b10ccd664da6f273ea134bb55ee48f09ba585a7e2bb95b5aec610631ac49810d5d616f67ba0147e6d1be476ea220e0000000000000000000000000000000000fbcdff4e48e07d1f73ec42fe7eb026f5c30407cfd2f22bbbfe5b2a09e8a7bb4884178cb6afd1c95f80e646929d30040000000000000000000000000000000001ed3b0e71acb0adbf44643374edbf4405af87cfc0507db7e8978889c6c3afbe9754d1182e98ac3060d64994d31ef576000000000000000000000000000000001681a2bf65b83be5a2ca50430949b6e2a099977482e9405b593f34d2ed877a3f0d1bddc37d0cec4d59d7df74b2b8f2dfb3c940fe79b6966489b527955de7599194a9ac69a6ff58b8d99e7b1084f0464e0000000000000000000000000000000018c0ada6351b70661f053365deae56910798bd2ace6e2bf6ba4192d1a229967f6af6ca1c9a8a11ebc0a232344ee0f6d6000000000000000000000000000000000cc70a587f4652039d8117b6103858adcd9728f6aebe230578389a62da0042b7623b1c0436734f463cfdd187d20903240000000000000000000000000000000009f50bd7beedb23328818f9ffdafdb6da6a4dd80c5a9048ab8b154df3cad938ccede829f1156f769d9e149791e8e0cd900000000000000000000000000000000079ba50d2511631b20b6d6f3841e616e9d11b68ec3368cd60129d9d4787ab56c4e9145a38927e51c9cd6271d493d93884d0e25bf3f6fc9f4da25d21fdc71773f1947b7a8a775b8177f7eca990b05b71d0000000000000000000000000000000003632695b09dbf86163909d2bb25995b36ad1d137cf252860fd4bb6c95749e19eb0c1383e9d2f93f2791cb0cf6c8ed9d000000000000000000000000000000001688a855609b0bbff4452d146396558ff18777f329fd4f76a96859dabfc6a6f6977c2496280dbe3b1f8923990c1d6407000000000000000000000000000000000c8567fee05d05af279adc67179468a29d7520b067dbb348ee315a99504f70a206538b81a457cce855f4851ad48b7e80000000000000000000000000000000001238dcdfa80ea46e1500026ea5feadb421de4409f4992ffbf5ae59fa67fd82f38452642a50261b849e74b4a33eed70cc973f40c12c92b703d7b7848ef8b4466d40823aad3943a312b57432b91ff68be1000000000000000000000000000000000149704960cccf9d5ea414c73871e896b1d4cf0a946b0db72f5f2c5df98d2ec4f3adbbc14c78047961bc9620cb6cfb5900000000000000000000000000000000140c5d25e534fb1bfdc19ba4cecaabe619f6e0cd3d60b0f17dafd7bcd27b286d4f4477d00c5e1af22ee1a0c67fbf177c00000000000000000000000000000000029a1727041590b8459890de736df15c00d80ab007c3aee692ddcdf75790c9806d198e9f4502bec2f0a623491c3f877d0000000000000000000000000000000008a94c98baa9409151030d4fae2bd4a64c6f11ea3c99b9661fdaed226b9a7c2a7d609be34afda5d18b8911b6e015bf494c51f97bcdda93904ae26991b471e9ea942e2b5b8ed26055da11c58bc7b5002a000000000000000000000000000000001156d478661337478ab0cbc877a99d9e4d9824a2b3f605d41404d6b557b3ffabbf42635b0bbcb854cf9ed8b8637561a8000000000000000000000000000000001147ed317d5642e699787a7b47e6795c9a8943a34a694007e44f8654ba96390cf19f010dcf695e22c21874022c6ce291000000000000000000000000000000000c6dccdf920fd5e7fae284115511952633744c6ad94120d9cae6acda8a7c23c48bd912cba6c38de5159587e1e6cad519000000000000000000000000000000001944227d462bc2e5dcc6f6db0f83dad411ba8895262836f975b2b91e06fd0e2138862162acc04e9e65050b34ccbd1a4e8964d5867927bc3e35a0b4c457482373969bff5edff8a781d65573e07fd87b890000000000000000000000000000000019c31e3ab8cc9c920aa8f56371f133b6cb8d7b0b74b23c0c7201aca79e5ae69dc01f1f74d2492dcb081895b17d106b4e000000000000000000000000000000001789b0d371bd63077ccde3dbbebf3531368feb775bced187fb31cc6821481664600978e323ff21085b8c08e0f21daf72000000000000000000000000000000000009eacfe8f4a2a9bae6573424d07f42bd6af8a9d55f71476a7e3c7a4b2b898550c1e72ec13afd4eff22421a03af1d31000000000000000000000000000000000410bd4ea74dcfa33f2976aa1b571c67cbb596ab10f76a8aaf4548f1097e55b3373bff02683f806cb84e1e0e877819e2787c38b944eadbd03fd3187f450571740f6cd00e5b2e560165846eb800e5c94400000000000000000000000000000000147f09986691f2e57073378e8bfd58804241eed7934f6adfe6d0a6bac4da0b738495778a303e52113e1c80e698476d50000000000000000000000000000000000762348b84c92a8ca6de319cf1f8f11db296a71b90fe13e1e4bcd25903829c00a5d2ad4b1c8d98c37eaad7e042ab023d0000000000000000000000000000000011d1d94530d4a2daf0e902a5c3382cd135938557f94b04bccea5e16ea089c5e020e13524c854a316662bd68784fe31f300000000000000000000000000000000070828522bec75b6a492fd9bca7b54dac6fbbf4f0bc3179d312bb65c647439e3868e4d5b21af5a64c93aeee8a9b7e46eaaee7ae2a237e8e53560c79e7baa9adf9c00a0ea4d6f514e7a6832eb15cef1e1000000000000000000000000000000000690a0869204c8dced5ba0ce13554b2703a3f18afb8fa8fa1c457d79c58fdc25471ae85bafad52e506fc1917fc3becff0000000000000000000000000000000010f7dbb16f8571ede1cec79e3f9ea03ae6468d7285984713f19607f5cab902b9a6b7cbcfd900be5c2e407cc093ea0e6700000000000000000000000000000000151caf87968433cb1f85fc1854c57049be22c26497a86bfbd66a2b3af121d894dba8004a17c6ff96a5843c2719fa32d10000000000000000000000000000000011f0270f2b039409f70392879bcc2c67c836c100cf9883d3dc48d7adbcd52037d270539e863a951acd47ecaa1ca4db12dac6ed3ef45c1d7d3028f0f89e5458797996d3294b95bebe049b76c7d0db317c0000000000000000000000000000000017fae043c8fd4c520a90d4a6bd95f5b0484acc279b899e7b1d8f7f7831cc6ba37cd5965c4dc674768f5805842d433af30000000000000000000000000000000008ddd7b41b8fa4d29fb931830f29b46f4015ec202d51cb969d7c832aafc0995c875cd45eff4a083e2d5ecb5ad185b64f0000000000000000000000000000000015d384ab7e52420b83a69827257cb52b00f0199ed2240a142812b46cf67e92b99942ac59fb9f9efd7dd822f5a36c799f00000000000000000000000000000000074b3a16a9cc4be9da0ac8e2e7003d9c1ec89244d2c33441b31af76716cce439f805843a9a44701203231efdca551d5bbb30985756c3ca075114c92f231575d6befafe4084517f1166a47376867bd108000000000000000000000000000000000e25365988664e8b6ade2e5a40da49c11ff1e084cc0f8dca51f0d0578555d39e3617c8cadb2abc2633b28c5895ab0a9e00000000000000000000000000000000169f5fd768152169c403475dee475576fd2cc3788179453b0039ff3cb1b7a5a0fff8f82d03f56e65cad579218486c3b600000000000000000000000000000000087ccd7f92032febc1f75c7115111ede4acbb2e429cbccf3959524d0b79c449d431ff65485e1aecb442b53fec80ecb4000000000000000000000000000000000135d63f264360003b2eb28f126c6621a40088c6eb15acc4aea89d6068e9d5a47f842aa4b4300f5cda5cc5831edb81596fb730105809f64ea522983d6bbb62f7e2e8cbf702685e9be10e2ef71f818767200000000000000000000000000000000159da74f15e4c614b418997f81a1b8a3d9eb8dd80d94b5bad664bff271bb0f2d8f3c4ceb947dc6300d5003a2f7d7a829000000000000000000000000000000000cdd4d1d4666f385dd54052cf5c1966328403251bebb29f0d553a9a96b5ade350c8493270e9b5282d8a06f9fa8d7b1d900000000000000000000000000000000189f8d3c94fdaa72cc67a7f93d35f91e22206ff9e97eed9601196c28d45b69c802ae92bcbf582754717b0355e08d37c000000000000000000000000000000000054b0a282610f108fc7f6736b8c22c8778d082bf4b0d0abca5a228198eba6a868910dd5c5c440036968e977955054196b6a9408625b0ca8fcbfb21d34eec2d8e24e9a30d2d3b32d7a37d110b13afbfea000000000000000000000000000000000f29b0d2b6e3466668e1328048e8dbc782c1111ab8cbe718c85d58ded992d97ca8ba20b9d048feb6ed0aa1b4139d02d3000000000000000000000000000000000d1f0dae940b99fbfc6e4a58480cac8c4e6b2fe33ce6f39c7ac1671046ce94d9e16cba2bb62c6749ef73d45bea21501a000000000000000000000000000000001902ccece1c0c763fd06934a76d1f2f056563ae6d8592bafd589cfebd6f057726fd908614ccd6518a21c66ecc2f78b660000000000000000000000000000000017f6b113f8872c3187d20b0c765d73b850b54244a719cf461fb318796c0b8f310b5490959f9d9187f99c8ed3e25e42a93b77283d0a7bb9e17a27e66851792fdd605cc0a339028b8985390fd024374c76000000000000000000000000000000000576b8cf1e69efdc277465c344cadf7f8cceffacbeca83821f3ff81717308b97f4ac046f1926e7c2eb42677d7afc257c000000000000000000000000000000000cc1524531e96f3c00e4250dd351aedb5a4c3184aff52ec8c13d470068f5967f3674fe173ee239933e67501a9decc6680000000000000000000000000000000001610cfcaea414c241b44cf6f3cc319dcb51d6b8de29c8a6869ff7c1ebb7b747d881e922b42e8fab96bde7cf23e8e4cd0000000000000000000000000000000017d4444dc8b6893b681cf10dac8169054f9d2f61d3dd5fd785ae7afa49d18ebbde9ce8dde5641adc6b38173173459836dd994eae929aee7428fdda2e44f8cb12b10b91c83b22abc8bbb561310b62257c000000000000000000000000000000000ca8f961f86ee6c46fc88fbbf721ba760186f13cd4cce743f19dc60a89fd985cb3feee34dcc4656735a326f515a729e400000000000000000000000000000000174baf466b809b1155d524050f7ee58c7c5cf728c674e0ce549f5551047a4479ca15bdf69b403b03fa74eb1b26bbff6c0000000000000000000000000000000000e8c8b587c171b1b292779abfef57202ed29e7fe94ade9634ec5a2b3b4692a4f3c15468e3f6418b144674be70780d5b000000000000000000000000000000001865e99cf97d88bdf56dae32314eb32295c39a1e755cd7d1478bea8520b9ff21c39b683b92ae15568420c390c42b123b7010b134989c8368c7f831f9dd9f9a890e2c1435681107414f2e8637153bbf6a0000000000000000000000000000000017eccd446f10018219a1bd111b8786cf9febd49f9e7e754e82dd155ead59b819f0f20e42f4635d5044ec5d550d847623000000000000000000000000000000000403969d2b8f914ff2ea3bf902782642e2c6157bd2a343acf60ff9125b48b558d990a74c6d4d6398e7a3cc2a16037346000000000000000000000000000000000bd45f61f142bd78619fb520715320eb5e6ebafa8b078ce796ba62fe1a549d5fb9df57e92d8d2795988eb6ae18cf9d9300000000000000000000000000000000097db1314e064b8e670ec286958f17065bce644cf240ab1b1b220504560d36a0b43fc18453ff3a2bb315e219965f5bd394c68bc8d91ac8c489ee87dbfc4b94c93c8bbd5fc04c27db8b02303f3a65905400000000000000000000000000000000018244ab39a716e252cbfb986c7958b371e29ea9190010d1f5e1cfdb6ce4822d4055c37cd411fc9a0c46d728f2c13ed00000000000000000000000000000000001985d3c667c8d68c9adb92bdc7a8af959c17146544997d97116120a0f55366bd7ad7ffa28d93ee51222ff9222779675000000000000000000000000000000000c70fd4e3c8f2a451f83fb6c046431b38251b7bae44cf8d36df69a03e2d3ce6137498523fcf0bcf29b5d69e8f265e24d00000000000000000000000000000000047b9163a218f7654a72e0d7c651a2cf7fd95e9784a59e0bf119d081de6c0465d374a55fbc1eff9828c9fd29abf4c4bdb3682accc3939283b870357cf83683350baf73aa0d3d68bda82a0f6ae7e51746,,,invalid point: point is not on curve +00000000000000000000000000000000197bfd0342bbc8bee2beced2f173e1a87be576379b343e93232d6cef98d84b1d696e5612ff283ce2cfdccb2cfb65fa0c00000000000000000000000000000000184e811f55e6f9d84d77d2f79102fd7ea7422f4759df5bf7f6331d550245e3f1bcf6a30e3b29110d85e0ca16f9f6ae7a000000000000000000000000000000000f10e1eb3c1e53d2ad9cf2d398b2dc22c5842fab0a74b174f691a7e914975da3564d835cd7d2982815b8ac57f507348f000000000000000000000000000000000767d1c453890f1b9110fda82f5815c27281aba3f026ee868e4176a0654feea41a96575e0c4d58a14dbfbcc05b5010b1000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000103121a2ceaae586d240843a398967325f8eb5a93e8fea99b62b9f88d8556c80dd726a4b30e84a36eeabaf3592937f2700000000000000000000000000000000086b990f3da2aeac0a36143b7d7c824428215140db1bb859338764cb58458f081d92664f9053b50b3fbd2e4723121b68000000000000000000000000000000000f9e7ba9a86a8f7624aa2b42dcc8772e1af4ae115685e60abc2c9b90242167acef3d0be4050bf935eed7c3b6fc7ba77e000000000000000000000000000000000d22c3652d0dc6f0fc9316e14268477c2049ef772e852108d269d9c38dba1d4802e8dae479818184c08f9a569d8784510000000000000000000000000000000000000000000000000000000000000002,,,invalid point: subgroup check failed diff --git a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/invalid_subgroup_for_pairing.csv b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/invalid_subgroup_for_pairing.csv index b0c4d6de21bd..acc3197d1b13 100644 --- a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/invalid_subgroup_for_pairing.csv +++ b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/invalid_subgroup_for_pairing.csv @@ -1,101 +1,101 @@ input,result,gas,notes -000000000000000000000000000000000ded5634c6bab9610e70f3a9be2bb39c51f2ddd762d22d6c3f0961af19350c4ca4bae333bf4cf586d8cd1e0a0a6c674e0000000000000000000000000000000012309fe1d843245e2cb58d419ff06ed8e93ec901c01d0c5be453e11d10f930afa0c35428ef0c8dc13ce99c990af166630000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1d9f0000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a400000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1d9f0000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000014881e90a100e5c1e07588d68c69b9b217d2c57b2bd8782ea7579abfac3a38275677a8dee7e689c1b185712ea38bf0ba00000000000000000000000000000000061e48ceb68db1cb84ed39f9772f937922198b47082d7517c8258e46a490fc20e4e01971711853ab653d064f8adc79e200000000000000000000000000000000173518c27d76414f3027ed3e4936ad1b6aaebf0a98462df3e3a55aa38e19fb121acc6eeadb7689c84fec18580b63784c0000000000000000000000000000000007c116829ccc1d5505dcce029f5c8b7c8a9cbc9dd562a874766a5654483aec977a0fb9e611f9471d2f0c91fd6534892f000000000000000000000000000000001560b267e66200e69d6298250456d88500a0d79ea69870358a6cb39609fb6596e539b28bfea9d1c7054b5b51a4c0f3950000000000000000000000000000000000cc196f93e5a2dd3a41a1ba23fd2e53bf376c910117e9216663e30091b96c897080bca189ce3107720dac1c54dc4fc70000000000000000000000000000000014881e90a100e5c1e07588d68c69b9b217d2c57b2bd8782ea7579abfac3a38275677a8dee7e689c1b185712ea38bf0ba00000000000000000000000000000000061e48ceb68db1cb84ed39f9772f937922198b47082d7517c8258e46a490fc20e4e01971711853ab653d064f8adc79e20000000000000000000000000000000015237996817e97b29ef5b4ee49e6aea7129bdc4a46707f99df3ab8af36eb4123e93496d94846f7807b3bd2c87d3ca039000000000000000000000000000000000df666f7728483689a746e5b39f4848a9f2d831cb17d4e5f7fb67de5d497f6399de5f37ba9e6ab76937e26450000d600000000000000000000000000000000000e4ffecf86b371ddc9ee6a72b5ada74790b590acc51c6c5c479c43c532a9507b4b4909bdc901b00932371a109fd38b7e000000000000000000000000000000000354f92ccabccc9390072671ccc8d3ea0a0c44f85816f20bd6e8b485e648e8ba0d5b845a8835395ce65b8101015ea83f,,,invalid input parameters, G2 point is not in the expected subgroup -00000000000000000000000000000000199fa649608972d295befae38d36940663d2b67bb286a3d549c75deef39ef8068728bbba2cafac44c102499601e4bd860000000000000000000000000000000002dac960f96822774a4956fc0ba97a235d0a2c10d81d9adf7b88215250c934b68c3de07a97adcaee2aaad0d3d84ecf6800000000000000000000000000000000000eb3c91515d4a41209a73564741a8ccf901a624df9db22e195a5d02d24b7bc0a12756b15b8d006cb991a7e088eaef1000000000000000000000000000000000704ce8afc808b0161f6f61b22d990d713ae398779e6e74e9b5771daf006ce0bba3a8088edf75156f0e48b92ee8409b00000000000000000000000000000000018fe81e05aff0620f4bdbe4a715e015650497afab62921eba0ab86b649e5a2fd3d54041868928519f537e36448688a0d00000000000000000000000000000000162bd97161201ea3c26f8dd1204a9c6b61b762bdf573cb5d20b6b255f30208ca7d96aa47b46fb8c6bf0922075f1c1ca8000000000000000000000000000000000d5bb4fa8b494c0adf4b695477d4a05f0ce48f7f971ef53952f685e9fb69dc8db1603e4a58292ddab7129bb5911d6cea0000000000000000000000000000000004a568c556641f0e0a2f44124b77ba70e4e560d7e030f1a21eff41eeec0d3c437b43488c535cdabf19a70acc777bacca00000000000000000000000000000000000eb3c91515d4a41209a73564741a8ccf901a624df9db22e195a5d02d24b7bc0a12756b15b8d006cb991a7e088eaef1000000000000000000000000000000000704ce8afc808b0161f6f61b22d990d713ae398779e6e74e9b5771daf006ce0bba3a8088edf75156f0e48b92ee8409b00000000000000000000000000000000018fe81e05aff0620f4bdbe4a715e015650497afab62921eba0ab86b649e5a2fd3d54041868928519f537e36448688a0d00000000000000000000000000000000162bd97161201ea3c26f8dd1204a9c6b61b762bdf573cb5d20b6b255f30208ca7d96aa47b46fb8c6bf0922075f1c1ca8,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000009d928f478fea86b1e3c1ebf59b230af42e4a539dd43ff17b9ca250605401273edc42806bf2cb887c6093729238fc0560000000000000000000000000000000005b6040ce6d0802719af5b9c0fe48366c5a97bcad2c6ec25f64cd73f39dc73a22d0084c69f2e86637c584d2de55d6064000000000000000000000000000000000aaeceb367eaf2ab8afb5070b5f5611f19fed17e16f6b01cd20f5f1a7e550d4689c89d6490878877c46492e8fbc9db600000000000000000000000000000000019dc59fbefa7abf12f1aa92e420f52595a06e819e974c07b62a3ae459c62545922016abd8e91301aca8f48ed793b91af0000000000000000000000000000000012f5352825a95ff0a0f0948b150e5eb1ab53d6591dc54ca8b37941fa94a0fa68af8c35aaa26c73951d2dd52e9c7a55bf000000000000000000000000000000000531e610f3706a1c67b31909a97232acef0e23c35c657dc82d9508fcf33bfff777386dc8265accb52d0da207957d25160000000000000000000000000000000009d928f478fea86b1e3c1ebf59b230af42e4a539dd43ff17b9ca250605401273edc42806bf2cb887c6093729238fc0560000000000000000000000000000000005b6040ce6d0802719af5b9c0fe48366c5a97bcad2c6ec25f64cd73f39dc73a22d0084c69f2e86637c584d2de55d6064000000000000000000000000000000000cf95f6bc3f14cc8a657da35f212d55d3633ca0d224794ac1e49cbf1e1db7757dac2bb08880f7b13f2ac0c2b95ff483c00000000000000000000000000000000115bf27014a31726503f0665301f9e183de41e002db568916aaaeaa4c8046475860db3b993b2ac2af58b12614f0b9f2d000000000000000000000000000000000983ee62076e9c5f8e6ac3ba8e5f98823a37ff20432f0b4e7d9e008660965f551bb5538e6ba28541ad514e87d128da1b0000000000000000000000000000000019c9930e3e009986608463c80aa0049fcac5e897474e519b52c80960f1dada5a48332d810f1f9a34ee479383b5b556b3,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000f240a4daf7acbe8f4c5a9cb40ccc6d99dd712b8dae4c13e9d3839b0c88c5eef6f050144a4b731267e2132a81b1a635c000000000000000000000000000000001931c93a957ba9005fa69004c7e984b9dc86f45ec03eeed77addb3e1bee3c2424105df8e8faacae2b07623cd3cc7261e000000000000000000000000000000000805892f21889cab3cfe62226eaff6a8d3586d4396692b379efc7e90b0eaad4c9afbdf0f56b30f0c07ae0bc4013343b30000000000000000000000000000000007853f0e75c8dee034c2444299da58c98f22de367a90550dbc635fb52c9a8f61ccc100f70f10208944e48d09507fdce100000000000000000000000000000000064afd6b3ef7ff7ec34f1fa330877b42958a46a7698c6d21adf73bfdfcab7793b312e21e5988652e655f2d42edb8a673000000000000000000000000000000000ea8a2217c3dbcc0f6e562de9cb2f334c896577d0b3a7108d96b1aba2d705dbf531e870d4023cec2c0533455013242330000000000000000000000000000000019c822a4d44ac22f6fbaef356c37ceff93c1d6933e8c8f3b55784cfe62e5705930be48607c3f7a4a2ca146945cad6242000000000000000000000000000000000353d6521a17474856ad69582ce225f27d60f5a8319bea8cefded2c3f6b862d76fe633c77ed8ccdf99d2b10430253fc8000000000000000000000000000000000805892f21889cab3cfe62226eaff6a8d3586d4396692b379efc7e90b0eaad4c9afbdf0f56b30f0c07ae0bc4013343b30000000000000000000000000000000007853f0e75c8dee034c2444299da58c98f22de367a90550dbc635fb52c9a8f61ccc100f70f10208944e48d09507fdce100000000000000000000000000000000064afd6b3ef7ff7ec34f1fa330877b42958a46a7698c6d21adf73bfdfcab7793b312e21e5988652e655f2d42edb8a673000000000000000000000000000000000ea8a2217c3dbcc0f6e562de9cb2f334c896577d0b3a7108d96b1aba2d705dbf531e870d4023cec2c053345501324233,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000012d75b62dd32798ea12b99f51a496bbf61bca93cd233dd288e00259893dbe7c73b6342860d41fd86878a6de608dba0ed00000000000000000000000000000000018e963e1cdb31ce3f636091952c17ab4c03c0f55940196b5772002850c6c86a3da13a9a5fbfaa8256fb0a9c4139bfc60000000000000000000000000000000018330d288ddc1786744f95c4b3bacbdfd10ab560fc283c1ecde1bcbdc53cb284198f340241242763c77b4cd3b8c729200000000000000000000000000000000019a3d86d9b3ff0b03da1686c3234bb2b8109ab12ffd7599ef9e3489fcee40e50036dd952f7a4129473340fb725458cc50000000000000000000000000000000010f70de44c7e0510c8ff8327dd83ea4087f9f8b5a53fbe18615fa31a3b57862b52a7726b3e9403afe93dcafc5606dfe500000000000000000000000000000000199e6da569d0eb7938d52b396c9bc6d8b563dd6e64edd60e2e25c493475a0cbd953e7ff54309d189eba2b3827ad614180000000000000000000000000000000012d75b62dd32798ea12b99f51a496bbf61bca93cd233dd288e00259893dbe7c73b6342860d41fd86878a6de608dba0ed00000000000000000000000000000000018e963e1cdb31ce3f636091952c17ab4c03c0f55940196b5772002850c6c86a3da13a9a5fbfaa8256fb0a9c4139bfc600000000000000000000000000000000192b17cf1539a57ee64701bcd07ed0b067a6ab12ef17408ad3ba1db0d94889cc481c877588fd70270287aa8f279659af000000000000000000000000000000001779c74b7e83c8d931510b555de206dee2d9edbb49b473c586c5b7046d1389e6f612cf96ee76446a21b02f135492fa1c0000000000000000000000000000000007165050fd4407a69143a98001c290f8b1aef02d64d28ee046744009f4afa376da95b4f6a3dd36427a297ed25e6bb3320000000000000000000000000000000005a9238272385614f6df896801f7f9af9cda1ac0ce3c816174693bd52b1799386c4f6355fc36f9ecd566a3a4b20e612b,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000d612430d9b8956188fefa4cd839ec8dffee18678f83d4984b08e227880ec127e63860bf5d7a27c309fb425b90c0afa500000000000000000000000000000000100556e6391ac2a05b15e552e67d6509e21c4770cfe2f8126fd1d9663995839420a4915656d6292d0767892833369bbc000000000000000000000000000000000aeb5c087644595d0912879f61959d2731ff55260c682ed2bc5fc55c13964ef7c1f70aeb55876d2264d558c31371ca69000000000000000000000000000000000e173848f4570525b03a2b2c86f4dcdb8b28dd6d18c1354cad31028eb1b8b44432c2346edaace093e3954c7fa6d338a4000000000000000000000000000000001949b0902506d111ef6318edcd7a58ca4d69f5804a028aee73c3786cb2db168c6a73b77194f7a021ae6ae43ac78ade340000000000000000000000000000000017c5e28ba6103d97e2f3d3611c0c78f06406e0da8a49ae29c7d460b52f75136920784cd500aa3593858b877697eb84240000000000000000000000000000000007dc719ae9e3f1e11d3ed4747a546a7b973ccb1967adb1b3066645a8bde9632bcfa3530e768f088ddbc022b169e67cbf000000000000000000000000000000000bbf9cf884b19c84045da1cead7dcd9fdbf39d764ff1ad60d83ed1e4fd0ce0554f0fb618203952cf02a7c4ba466c66b8000000000000000000000000000000000aeb5c087644595d0912879f61959d2731ff55260c682ed2bc5fc55c13964ef7c1f70aeb55876d2264d558c31371ca69000000000000000000000000000000000e173848f4570525b03a2b2c86f4dcdb8b28dd6d18c1354cad31028eb1b8b44432c2346edaace093e3954c7fa6d338a4000000000000000000000000000000001949b0902506d111ef6318edcd7a58ca4d69f5804a028aee73c3786cb2db168c6a73b77194f7a021ae6ae43ac78ade340000000000000000000000000000000017c5e28ba6103d97e2f3d3611c0c78f06406e0da8a49ae29c7d460b52f75136920784cd500aa3593858b877697eb8424,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000013b23b5a61ad3ed0ed74a57023285338c77c01dd93e17fd93d4225d27a7168dbdae3fff0c8ebcfc30887df348deea7ae000000000000000000000000000000001245282782135d41eee4dbd9b69a586e1ae2e17426643494427eabec93ba3c056089ce9c8a667727c3464178f7c87655000000000000000000000000000000000d35887ecdfce840b79f60f77af0e7cc01289ff20e1558a14b57a73f3fdd8e66ca496a73ce888d1c8cd0888d8219412b000000000000000000000000000000000cca9ce1b3c5bb6d02d5c36549438a4854dacacab7b173b434d09e496256edc2372a08edb2de26e5369af03dd0e2d73e00000000000000000000000000000000152d022429b54ac4bb70dacc888a2a3409cd7d2db0614ba0afe236c7bff311967718a70eb7943f93a6dbc88d3c008e8b00000000000000000000000000000000191e99ff1e02809121098597de4d176dfc85586d3e13609b3399c08da7c9cd6fa006e8b95551878a74e140cf166625c30000000000000000000000000000000013b23b5a61ad3ed0ed74a57023285338c77c01dd93e17fd93d4225d27a7168dbdae3fff0c8ebcfc30887df348deea7ae000000000000000000000000000000001245282782135d41eee4dbd9b69a586e1ae2e17426643494427eabec93ba3c056089ce9c8a667727c3464178f7c8765500000000000000000000000000000000179657b434fbb3ecb4857b4559c8cdaa1448b2a4bf4314349341a45bd3a2cdeb2aa6be75ee1aaaef0f90d086df55ccc40000000000000000000000000000000011ec9abd1a497dc7cc4b4b9e2cef8a7abc767969703d79ff51d7a4f1ab93ae9fc7e8bd4852da22ec067d326fffa54757000000000000000000000000000000000a45435d1f78ad93aeef8a88dad39aebc0cf38cc16fbb02c571a269bbec773e71b5ee9d09a505afc9a7fe11b06f040cd0000000000000000000000000000000000b6ee9d2b0fbd996455169ef07afa3be3c6535d65545c8503c3d77dd0576eecd2f81b50dabbb62328edfe236981d5c1,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000b14b12ecaa94f9656be54772be9b22a2495d4ff873b0bb971c27ab1d8b940c84cabcf921f6f75e93942c38cddeb8751000000000000000000000000000000000c9ad793ae80ad0e1c39670876d679bc7f930c1df1f9202593d1901079687b77f18e4b1536bd7c4152ec197321dc945a0000000000000000000000000000000006a90568fa25b401756e3f86b5300c4d3b626dc6274f4685e8a9f56ec5ca2afce36a1fdc6d3414edc8780c4e650f10dc0000000000000000000000000000000012e41e8e0dd10b3ee31fa866753aa5d9db7669153b141114cdb2ef7fa6df5db27aef0cc70e76a741eae504b038ecf2300000000000000000000000000000000005c35f3372f1ec9845bd04ea722fbed2be1388abf59e622dd3dafb4b3af49bc5fba9e20235e7e58973fedf4b8b720691000000000000000000000000000000001111d18d621070509805d306a31c109701288fd55d4c0644349deb080c6591b6e852b4f7e009b80019513de7f2fce17d00000000000000000000000000000000000707c711f77bb425cddc71ecf96a18b6eb0bed7f012c4f6cc9431003f2e1ac17f7c1f68c4965a4fcc273a3db93451d000000000000000000000000000000001211464c91c7e78b00fe156da874407e4eeb7f422dbd698effb9a83357bf226d3f189f2db541eb17db3ed555084e91ec0000000000000000000000000000000006a90568fa25b401756e3f86b5300c4d3b626dc6274f4685e8a9f56ec5ca2afce36a1fdc6d3414edc8780c4e650f10dc0000000000000000000000000000000012e41e8e0dd10b3ee31fa866753aa5d9db7669153b141114cdb2ef7fa6df5db27aef0cc70e76a741eae504b038ecf2300000000000000000000000000000000005c35f3372f1ec9845bd04ea722fbed2be1388abf59e622dd3dafb4b3af49bc5fba9e20235e7e58973fedf4b8b720691000000000000000000000000000000001111d18d621070509805d306a31c109701288fd55d4c0644349deb080c6591b6e852b4f7e009b80019513de7f2fce17d,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000e96f4879493d577aa02e9793aba3c680de9296dadef569d70484297398cca1e3d8acadc6c188345d98d5208f5b2d7800000000000000000000000000000000003bee60fe5a42f31ae4218a6c6fff2ffb51329c86f8d3c381fb090bba0274eef8cf0d351fb4bbe2d51e25d9f7b2094ee000000000000000000000000000000001664847d2bfb8939cccda0bc7b7ef02fcc1188fcade83341db7c4dfdd4a1a3bdd627379544dd405bcdb58caf4be39cb40000000000000000000000000000000001a293caf801299370cd133fd54d2086c6d1aa96ec32a1c9c57679f45785c9e6fa91018720c2d0515b38790914ab61d20000000000000000000000000000000017efcbccb71f6bbfa515e89d59b5fcdda4bf37c90fc6dafe9c6b0fe3d42a372ad9c66e5d60e04eff30ea7c1952f3fed30000000000000000000000000000000018893c6a3c621ba6c1119529a07d6c2f9c1d4bee5e0090c4c0204d8d4f3e200ab3300dcdf1cfe61370d68849806ddd8e000000000000000000000000000000000e96f4879493d577aa02e9793aba3c680de9296dadef569d70484297398cca1e3d8acadc6c188345d98d5208f5b2d7800000000000000000000000000000000003bee60fe5a42f31ae4218a6c6fff2ffb51329c86f8d3c381fb090bba0274eef8cf0d351fb4bbe2d51e25d9f7b2094ee00000000000000000000000000000000060a0cdf9ea84b21c7399b21e337dab42f357c30f50b076b4f95bf8623b88e557cc8b346e41a996adbfbaf0a3697ae8e00000000000000000000000000000000003746a481d5760263d43ee3c2ed6493caddcc59754fb8534ff57ff9bf167f356d901277b9935210ddac4dfff8f21161000000000000000000000000000000000d80e40583153e6e0adf9f95ebc4fd501f5aa426ff77038b69f0fe8259268f9224628ead1a63b7ecb4218ba825ee45b60000000000000000000000000000000005d0421b213f88469887d67c68316a98c18d2035a601dec994f6a4b91fb6c3b7e5ac7741cd07c956908869e1023dd32d,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000001576c6f620bbe36a7df78985dbffd355c032bb667f4757501bb27a426c99e1949a1bc65afebaeac0668ff3d375b7837d000000000000000000000000000000001651783a82f2a8e1e389923bfb53836492c00e447b288873071bd8682a0ef30864f4d0fc9a626bf701bdfe1a48f4479f000000000000000000000000000000001335276775545fbb4c701beb57cb34312108c9f1d46b4aa4b09a16faf0e648b4e80848bf5e75ed8730715f0107afc9820000000000000000000000000000000006ffff8736bab41b4ee5681b741a81fc870e648001027161144254d04c678e4f954e9f191bd8b26201aec681cbf0654b00000000000000000000000000000000026ede90d14fa0885baad21f9631bae058573251cbef5757bb8cfad061f3bdc78834fa5862dea19a2236c014b0f1652e0000000000000000000000000000000009844d0cf7f6f3401145d8d720defa577ca46b49e04e39c4c139ec6811a574e7dd5ce3acd00d1ce9496f10dd15c6d946000000000000000000000000000000000a6ff5f01a97c0f3c89ac0a460861dc9040f00693bfae22d81ea9a46b6c570436f0688ed0deef5cdcc5e2142f195b5c000000000000000000000000000000000193a17880edffe5b2ebedf0dc25e479cac3b136db9b6b24009ea0a9ca526d6dd9714d10d64c999d4334baa081b9f2fbe000000000000000000000000000000001335276775545fbb4c701beb57cb34312108c9f1d46b4aa4b09a16faf0e648b4e80848bf5e75ed8730715f0107afc9820000000000000000000000000000000006ffff8736bab41b4ee5681b741a81fc870e648001027161144254d04c678e4f954e9f191bd8b26201aec681cbf0654b00000000000000000000000000000000026ede90d14fa0885baad21f9631bae058573251cbef5757bb8cfad061f3bdc78834fa5862dea19a2236c014b0f1652e0000000000000000000000000000000009844d0cf7f6f3401145d8d720defa577ca46b49e04e39c4c139ec6811a574e7dd5ce3acd00d1ce9496f10dd15c6d946,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000016e8fb30c523be94fed64c81cefcbed03d7a2c85ce975601a441a920d70980be8b7c682ebf2aa3cc36ad1bf2d98a711e00000000000000000000000000000000056d7a36324b92ce3bf1644a2a0f6e717b0e9d94e9e5231f0c999c0f6eac936f5c1b1ff4aef04b821454a951882fd45000000000000000000000000000000000069ce7ace071ac2f7034200da8eb9252c55cbb50a591c563684013fa8071d7289a44ce5b100db6af1e8732b8e5b3b7fb0000000000000000000000000000000019535c703e9dec227c92db508c5c0553b986b93e3a90b35f472ad8e5b217bc7658ceb7ea452b76984d3d17859fbd7fc300000000000000000000000000000000008b3677ecfb10faae0478be5be5c72fcd7137042b5972fffbd15ac95d6104687a81fa3db232edbbb8703280412eddd30000000000000000000000000000000012a628e23e5c7f0225eaa75b6c9199d1d3a0316d474d1fa729640c295ec156ce3bd49f193d993165b9a69ad6cb2ed75c0000000000000000000000000000000016e8fb30c523be94fed64c81cefcbed03d7a2c85ce975601a441a920d70980be8b7c682ebf2aa3cc36ad1bf2d98a711e00000000000000000000000000000000056d7a36324b92ce3bf1644a2a0f6e717b0e9d94e9e5231f0c999c0f6eac936f5c1b1ff4aef04b821454a951882fd4500000000000000000000000000000000005b6ff8cf47cdedab38d984013db8401fa4783e7c8e78160c7a420de86636683b8dc292e1f0494dba5865f217e33e7c40000000000000000000000000000000008287d216fc45ee3e210630f0dc4893dfbba90b3bfd34986b64b04a2ec6fea0496cb0f2910cbb99a70896e5afcf809e8000000000000000000000000000000000a1a11f1b52c35b9e061c57b7b7f5f76f4db764607c93c2dddf245170f4c6fcf5915d72130e6f8f0c0c5b29a4970aeb30000000000000000000000000000000009255413a3db5889608069b7a72879b659ee5e1e71165752a9173cf1ef749050fefb86584ce90cbd3c3aa3db023b3322,,,invalid input parameters, G2 point is not in the expected subgroup -00000000000000000000000000000000117e2e3a8753660374fb2b812038bfd8f15d36d26c7b07fb546610405cd4442c79166060c8b8e767ea4084a583bbbcca0000000000000000000000000000000011247def4be1da163e724a175f74afde615df1417cdc2491158fd560442e56ebbcb61f51f9712ac93131024e27a1caa90000000000000000000000000000000001cdfae9234096578b9413f926ef8c6831f2c0f700e25d7553a746aef44238e493f8032e09f67f2fed9676c9611f60e70000000000000000000000000000000019c8bae08d3926997146f7827f00cde863684dd4050ea5da64f6798e7a930d3c1f34046bea0f44232594f5469db566280000000000000000000000000000000013574b997ee8988aa81db0e2ddb98be2e7005603076fac5cb246f65c869aa7bb3f148c8dde970e34e5e5efce023e633c000000000000000000000000000000000998bc9d41c5d527360fc4e68ba067d3778cf5cf00e5959b5ec52c1595aabe6e2e92d40cb34faa84513d150568c8cfc00000000000000000000000000000000009ec00ea2da59d937d3154d86dbed2957667253401bce9de80e0ffe6df32f36b06404b9e3af08e912a0b4ef091f93efb000000000000000000000000000000000dd8d1bd66f4accbc9d0c7dabef7af72f51c67a0d61384647533ad92bba44a312f0be0fa52163176f1aff4e64c00aefb0000000000000000000000000000000001cdfae9234096578b9413f926ef8c6831f2c0f700e25d7553a746aef44238e493f8032e09f67f2fed9676c9611f60e70000000000000000000000000000000019c8bae08d3926997146f7827f00cde863684dd4050ea5da64f6798e7a930d3c1f34046bea0f44232594f5469db566280000000000000000000000000000000013574b997ee8988aa81db0e2ddb98be2e7005603076fac5cb246f65c869aa7bb3f148c8dde970e34e5e5efce023e633c000000000000000000000000000000000998bc9d41c5d527360fc4e68ba067d3778cf5cf00e5959b5ec52c1595aabe6e2e92d40cb34faa84513d150568c8cfc0,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000018de31d75ba31dc1441bee38f5fb9e9d347e0243e6c3220de664e04a0af17c776fbb483f63ebeac48c7811adc0fff6bc000000000000000000000000000000001053f5c7a65dfb41b7631a22e60337769beabd663fa76eaa1e01f0c0e3c901f40a22b34adfb13b38e298eb83f08d7b1400000000000000000000000000000000079daf601b5fdd1c00552382a819e1924a517226864aa3565d384dc399e6e124c3ad61b236e19321078eab585579572d0000000000000000000000000000000008ff51b4d60d9fb1718c5622b1a3353675ca0144e12e68875481394755107b7f3364d1320283ce34737d5ea0b7d9b40f0000000000000000000000000000000000f430d35de439bf8ef82df4dc61459cf9783d66531e8075f323dbf102035032972a4830ba6bf391b568e6b691723ea600000000000000000000000000000000042df3a5c7b534c48c9af9f48e5cb296e2e514e3322630989c3da9696485797fe2ae036e13484e26cb59b48a479d3f520000000000000000000000000000000018de31d75ba31dc1441bee38f5fb9e9d347e0243e6c3220de664e04a0af17c776fbb483f63ebeac48c7811adc0fff6bc000000000000000000000000000000001053f5c7a65dfb41b7631a22e60337769beabd663fa76eaa1e01f0c0e3c901f40a22b34adfb13b38e298eb83f08d7b1400000000000000000000000000000000180168b2c9a59a9bedcf002336a6ce5d5ff36937948f5d3aa9fc1ef1912d9fed526edcaa00b5ede76906c40994937da00000000000000000000000000000000018d47a4f6e4320a230b8a4e5f5eea7807fb5b0dccc72af182e8bb811f2470dfd485f291b8197899af84332e3674d56950000000000000000000000000000000000dbfed96298ad2f57fe7b1eff4791abdae5fd0ca3573e66270f8c9f6adcbf6e54a746789a496714f5cc06eb2b8190070000000000000000000000000000000002939de2a2f7ec3d44dc5ae679967a5d7efcf80df8a21d9708c036c602a5050487f80a39cc36c7e587f0f2610fed86b2,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000001ac9e5f4fdccfe8d2979ad5329b07b23b497c2b7f26283f8c79548387610580568bdd9dc040261d6c265aac581b4665000000000000000000000000000000000eaf31d6368bb9d762ea067eed73b008dcb4d84643471dc1d64104eaefaf500858d9a9323b7fa2ba3c22bf15e7db6b9d0000000000000000000000000000000007457f2601621a99050d8993244f026b9a62ff7055b325e6f1edd1cf54065785f003cf7c8a4bb1f7bdf14e220e490ada000000000000000000000000000000000928eb76b428dde37546a27f3d77605c293738f448fbdd6d618747b0de04004aa4419cc5601600419c6e1d470c15982e0000000000000000000000000000000008074e9f5473492dd2e536f7b305be4e5c564cfc9218934d03dde6dc5118064ebaa5c26fdd1123a9c31336c37c1234900000000000000000000000000000000002bba1f9b7da6abd2b322c8f11c749b2a284552eab25a77d21b38b028da477a3ffec1901a015e81fe2893576a41e4c0b00000000000000000000000000000000172447291285a20c3ffcdef805260f00fbd4c5d3a42ee5b17d5ec05a723aadf4c2acc49f839e222155f29d0c6384bb0a000000000000000000000000000000001490dae85f858ed057fdb61c22ebf3d45c3af02afa53f32b2542808bb4db5bb1b9603e377f0b6d214e03050379f8006c0000000000000000000000000000000007457f2601621a99050d8993244f026b9a62ff7055b325e6f1edd1cf54065785f003cf7c8a4bb1f7bdf14e220e490ada000000000000000000000000000000000928eb76b428dde37546a27f3d77605c293738f448fbdd6d618747b0de04004aa4419cc5601600419c6e1d470c15982e0000000000000000000000000000000008074e9f5473492dd2e536f7b305be4e5c564cfc9218934d03dde6dc5118064ebaa5c26fdd1123a9c31336c37c1234900000000000000000000000000000000002bba1f9b7da6abd2b322c8f11c749b2a284552eab25a77d21b38b028da477a3ffec1901a015e81fe2893576a41e4c0b,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000515390641039576df1debf767b899deed928bba057d8564e7d117b324dd7f45e38939ffa1056fea35e1df8ba38815ad000000000000000000000000000000000013af9258135a09e5710a22dc437a4efdfee1f6c25cc08fb026c7ea2accddb9446333a91a532742c7713f6639e0cc460000000000000000000000000000000017203225f7e7b55e52793698b8a1166de5cb3d130c7df6f74ae428c4f39e7d042d41eb3aed266ca8cd3be1618cfcbdf60000000000000000000000000000000016b8053ab19a08a8c23a166bfe7a89be6eed05f305525146d9ff6e03e47ba125403cb2f000672d08a2b59051242f61ea000000000000000000000000000000001136f9a9369aa3561d65e54869f36ae9d6945654ac16335aaf717e0f848463ad401a99e83b3581c79d4221f65d649e9c000000000000000000000000000000000302ecf71033b917efac49d7a22db2e5c59b656639c4d0aefdb431749718d560b7e5580b4532048a693ccc09fb8a44a6000000000000000000000000000000000515390641039576df1debf767b899deed928bba057d8564e7d117b324dd7f45e38939ffa1056fea35e1df8ba38815ad000000000000000000000000000000000013af9258135a09e5710a22dc437a4efdfee1f6c25cc08fb026c7ea2accddb9446333a91a532742c7713f6639e0cc46000000000000000000000000000000001330e5c71d9b0209c8f8c04b4a28ad70d826b2c781493ac50fe58d0d6b740de3ed08f9829aa9b207ecf623a36dc8de610000000000000000000000000000000019a81ae1c6c08004a75b8fb5426ec899a09becce68dfb63fa7335420f05075bcf42c85dfa688ae75398c3ae5e4d28d12000000000000000000000000000000001597318859306f3814d20faee54926d5e8ec01005fae8aa408989afd5a1d7add8956d8fd3e75f9e446fb8b2a31050b6b00000000000000000000000000000000151e7c5bbcaf1e9581ac48e2b9bc63bf4576ee5d938981550f00fe9e3a42d389d6b56acd0ac9254ceaa71519b5049a4c,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000a2e9dcb8461de77fffb1281df7360c947108baef671602902c3bfa4afe60e0b4810cd46bd91276cd58e33fbf4973301000000000000000000000000000000000c039ea7e94fca4a32a275691131df8e3d470d6026aa306c8ae855e9e411878247368615094621e6af5486809b467a7d00000000000000000000000000000000138ddc71e9709e595ce2631c9155069818d07f225f80511eac21c5655721df83f83e2abbf56e2d5ebc9698f9128f0579000000000000000000000000000000000080f7ae78277c94833c0f12aa2cd98285621e0d92a89b45cac848f5a75ea652e98cd085150b2d7babaa9a365123d90e000000000000000000000000000000001147cec62010d42cd84651ec61ad8263699786f0f34aa7f9de75ac841861fae2e8ce3795fde8e7038c8506f573cf0e0f00000000000000000000000000000000138ed243889db13546c69583c1aa93ee98366220ad80c590ad112adcb4b7c87fb48a34483e76d4a5c55a30f2adf1a6a6000000000000000000000000000000000077b7a4c4644b21ac3ef56db1163f7b2e07a817cfd9d4c6830a97d0ae0b620e0b235376d590162c378899ba12eadb5900000000000000000000000000000000022beafe4b4ab44434c9dabae45a395b5b8da15da2fc2e723c1b30b5efc95e880846844f27eb47dfae8657fa27ab64ef00000000000000000000000000000000138ddc71e9709e595ce2631c9155069818d07f225f80511eac21c5655721df83f83e2abbf56e2d5ebc9698f9128f0579000000000000000000000000000000000080f7ae78277c94833c0f12aa2cd98285621e0d92a89b45cac848f5a75ea652e98cd085150b2d7babaa9a365123d90e000000000000000000000000000000001147cec62010d42cd84651ec61ad8263699786f0f34aa7f9de75ac841861fae2e8ce3795fde8e7038c8506f573cf0e0f00000000000000000000000000000000138ed243889db13546c69583c1aa93ee98366220ad80c590ad112adcb4b7c87fb48a34483e76d4a5c55a30f2adf1a6a6,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000004db2336ff5016a6f0f34b2881eb80cfbb35f557ef492f2dc54a654c8c574651fc89f3f211a46510ebffcf5c890e5ee700000000000000000000000000000000103d17d59c26d8c85426b73593843e3863cd672043b7a392cdb05bf5dd69cd11583423a4b146dcd3fbcde4ef4349bd78000000000000000000000000000000000e07265d2762e8e398c83efe1c43452d91b90b7a4271c09ff693c83745a6c01b73561ffe3da9300c8e7e1602dbaab0bc000000000000000000000000000000000375579c16a167fd9f9f61d5177705f157aa0df3451971029a9444432db119fb33b8c07de33fc822eab46ed4ae47cf8200000000000000000000000000000000098cee454129e946d758f95e649a601b6e682467093cf32c76e5cd1328111f9d48cbb2850d4d2faafe429161b090f8ab0000000000000000000000000000000012a3fdf296743b2eb3f389eb6dbea52da21e7dbaad180177184afb7976e06fd4ad488399d39b760ca146278cb3759d7e0000000000000000000000000000000004db2336ff5016a6f0f34b2881eb80cfbb35f557ef492f2dc54a654c8c574651fc89f3f211a46510ebffcf5c890e5ee700000000000000000000000000000000103d17d59c26d8c85426b73593843e3863cd672043b7a392cdb05bf5dd69cd11583423a4b146dcd3fbcde4ef4349bd78000000000000000000000000000000000e87688c9f6f48450528cec78f874d87dcfab499bce391e964a0abd601d675eec8a2b4cc6c44811cbe918913a230975c000000000000000000000000000000000451c1a17567b55123da563e173b2d92ab635c4957d116fdff8eb5a3e00bfbe079abead42b9c990b56db919719d066160000000000000000000000000000000003206eb27b9e53bc451bdbe5059133a51d656d9d80654647163a070741761af3e712e2042acc5ca29fe72cafb3a98ec7000000000000000000000000000000001869b7fd294c230aa5901db9cca31e6d3801069e0795e4c7c63dea8adc1e4a5709ec62670e2abeeb040031b7fcc8521a,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000007248a496f2cc918cc3cf0240c5c3d0dce36228a199766106999205b5767db09c2ff5cc720691ebc6bb1c316159d1c000000000000000000000000000000000019ab8e34bc4c0ba409c7edf7bbd4d0cf03f7185a2baa3f22ebd6234503d56e9b0d84a5d8d46ef9e3ac6430029be82b2b00000000000000000000000000000000143220e1cd08ffaa6db4795ed4aa35f3b12cce724fcad005367328972f2364f34096e32f1f1cb7a4287ab636d0030322000000000000000000000000000000000f2de47a37a55edbb75ff0bcc446611d690d7f9efdd09ca1ebb6f1d64a330bed420bcc85aed8b95316fcac3aa7d1f2230000000000000000000000000000000016afb044b8b8c64547e000f80b25576aa329a4319dcd4f1bbe15d12e6f3bbdddbb52140e6297c637311ef0c7a31cafab0000000000000000000000000000000019e6803c07fbaa075093f6a69f9dde05ba3d3f58e67389d7f096e56df49f8270008ed422b64fcdadf7cbbc8334037682000000000000000000000000000000000b231eac9869c94f055f22c16ef5efb687a7399da838c9456bb2469b3e394dd21e462bcc9298d5b56173c7b76f79ee9d0000000000000000000000000000000013a1bb963b7fbe1c3f6bb78cce8c3122773428ccbd87cbb2e76f306a8c5369577267e9b4ccb3417a235fc9045e8828f100000000000000000000000000000000143220e1cd08ffaa6db4795ed4aa35f3b12cce724fcad005367328972f2364f34096e32f1f1cb7a4287ab636d0030322000000000000000000000000000000000f2de47a37a55edbb75ff0bcc446611d690d7f9efdd09ca1ebb6f1d64a330bed420bcc85aed8b95316fcac3aa7d1f2230000000000000000000000000000000016afb044b8b8c64547e000f80b25576aa329a4319dcd4f1bbe15d12e6f3bbdddbb52140e6297c637311ef0c7a31cafab0000000000000000000000000000000019e6803c07fbaa075093f6a69f9dde05ba3d3f58e67389d7f096e56df49f8270008ed422b64fcdadf7cbbc8334037682,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000ee60801e3aaacf27167207a03b42594cdca4cdfe3a1f8e5f87b0e423ad36c56725dc79a26c157f41699e89884d27c1b0000000000000000000000000000000017c92b0beee470e126830843170bf0a89d13856ff6b0209e23bbf2a68e0668bd81db29de726ec7593124bea89771da97000000000000000000000000000000000a1beec4d223edbf1d09c448ea27038327bd8621842d3c7851779286060abd8130e4a641100627057498a421b59e90a600000000000000000000000000000000076a9559f5e33a2d5bdff6a89037c12e58ef920a3d8b9b4ca2a78299dca5dbf07c80d51014ee9288af8725e6c4312225000000000000000000000000000000000755036dd19c7d703343bc29238ae9332823514aeb4779b3378e8f7a3463a4089eef3fe79608db22b703b5d88c65bd80000000000000000000000000000000000ee3d82959dc04b5d59428142411e48e7a2fcfcff91e5554b725868c62d139bfd763720c9e2727c1b1fdc0bfd60f7297000000000000000000000000000000000ee60801e3aaacf27167207a03b42594cdca4cdfe3a1f8e5f87b0e423ad36c56725dc79a26c157f41699e89884d27c1b0000000000000000000000000000000017c92b0beee470e126830843170bf0a89d13856ff6b0209e23bbf2a68e0668bd81db29de726ec7593124bea89771da97000000000000000000000000000000000360e8bf07554b56d6f27de6a4b1f9184adb7980311e8f4128f619d9c8e64e98bcfca8eb3cab93e183882827fce2d06800000000000000000000000000000000010b0b114b55b17531576f782b6bee122cb5fb1e40d5af37ebaa1d4dad55a0f5d130c9a58cf27b1594eebd0b1492c0400000000000000000000000000000000018b70f0c047aaf7e17cb96015642e0d32f3135999de6dd8bded2c600866485ea75ab3a3e37581ae7dcfa1f54381f542300000000000000000000000000000000028cbef4b476a9cfb8daa35b1321a486b8c94f8b8df2352a0c8d509325706eee328b8dc3657122afb81be1fa2e60aafe,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000001573cb3b6f4e841fe97549f42e06db33abeb2bc481cc0bc8c5e7bd81948432dcbd34b64c5766e1e491bc131e77a011aa000000000000000000000000000000000e205be14db0dfb21e58b302d45916de4f4bb48ac95228326cf49c50e6c8588a655a343b90645f73dd03c9aa51c5659a000000000000000000000000000000000a109e3cf72bba0e695bd756478c72884210868c95f0dd6ced22b7254eed0432c2345bbf8addbbd11349fec6e354d2350000000000000000000000000000000018aaf98535812ee760e17ad933acbe6b57bc1310b6fef550210053f06a611ce9df5dfcfdb028497468802c08cc2117320000000000000000000000000000000007590fa8cb07f9dc2ce7b2090685730104ca65a101c8f93965264913bf1deae794b71ff226a805a273248dc641225585000000000000000000000000000000000fbca4e20854a6069c298224eca9a064b7ddc4d834f8671ac45cb5d1d39265fa435ff1750cde5135e170824e516d6d2c000000000000000000000000000000001510f39616d7f576980055d0547c603d882dbe85dd0b634577fae134f210736007345d035d815306db660de4a07fc24300000000000000000000000000000000064d356ad7bd2edcd3622b1fc225fe319f86b5f7da875cd57fe5adc5bdb6443c5b09d676950e2d069bd4303b8f920692000000000000000000000000000000000a109e3cf72bba0e695bd756478c72884210868c95f0dd6ced22b7254eed0432c2345bbf8addbbd11349fec6e354d2350000000000000000000000000000000018aaf98535812ee760e17ad933acbe6b57bc1310b6fef550210053f06a611ce9df5dfcfdb028497468802c08cc2117320000000000000000000000000000000007590fa8cb07f9dc2ce7b2090685730104ca65a101c8f93965264913bf1deae794b71ff226a805a273248dc641225585000000000000000000000000000000000fbca4e20854a6069c298224eca9a064b7ddc4d834f8671ac45cb5d1d39265fa435ff1750cde5135e170824e516d6d2c,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000002ff87f9bcde30db0919444e2582a5e987fdda67264ed7abf60a93b37288143dd44db75403988cb5b3bcd8d34ebdb4e2000000000000000000000000000000000c672f8bf6e9e747cccb9438be047e56d1cfbd0808864e601de59b0b28b5438cdd10f1194ff5abe8694a598ff3dc1481000000000000000000000000000000000c01823cb218303c7e611f6caf6994615cc3805bb4310bb0bb82b56740c4314ed0a2f9409c8fa6b9f10dead667880fe000000000000000000000000000000000013eb3436ceac3f12dcdd9e71707b85b7cd872ce144c502078d4fd3ec8b4ee579410cbaf2e3db1df9ba6b55f14fbbb0c000000000000000000000000000000000ecb26e5814d5bc66fbbcdff5dd5934a597c4344487e7e63138c31d47a8201433be5ce14205660cae129891f5b7aa8e000000000000000000000000000000000040241f695cc864e99e1dcb04440135c4f3d90a86310441647ab265e9fedf51592b0c11d5e91d2d28ac4ed19245e9cc90000000000000000000000000000000002ff87f9bcde30db0919444e2582a5e987fdda67264ed7abf60a93b37288143dd44db75403988cb5b3bcd8d34ebdb4e2000000000000000000000000000000000c672f8bf6e9e747cccb9438be047e56d1cfbd0808864e601de59b0b28b5438cdd10f1194ff5abe8694a598ff3dc1481000000000000000000000000000000000a2e0129c31f3427340e234df5facbb5d1994a4c8a058fe84f7d5c62c7d00013cc0133d8b0faf497aa8f7c04abc59c3400000000000000000000000000000000160da6086a089fc1a31b89a0f0c95ff2bd85debf5f0d1372f3ca6fc26348d8a8d0b03525b27f7d7db6603f0e55d3a08f000000000000000000000000000000001893edc299faf35510b92c97ef665f458b19e4097299b4f8b0f8a2ea1f31343c9d2f4c35dbdfb36bf7f3e30686e8c3240000000000000000000000000000000009b8731ed8df8ae90ec344c9dea1eeee98f4000b5fe30460e58f30e4ea17821389d613458c7721fd1d759ec4f2bcb325,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000e42f5097dabc6b0fef4dccbfc659da40b66671d7efbc19dbc14a42a368402156469c818f233ad911574899db01ed86d00000000000000000000000000000000128bbee344b7a19212b549cefaaec31c0644c986ab863005e4d3ecf532be633597ac3906e53ca79b22de916ab92b4ad70000000000000000000000000000000009003b42c08b5c7d3ee9f6abb96e08e6f537da25cd0cf7eb85a49067746c03566e133b54153380286ef5725db5b41058000000000000000000000000000000000f09b7b754c255e0e3b8435ade64d6960285759495659dfdb9b117806397baf8d3c87e30bee02c9e1b22fa3efcc58f300000000000000000000000000000000003582c08a8de4bbd20ebfa833517a75682618fba2702b6c71a4785f70dbdede4e86ad8e04aae1f50a6bb75842ab74aea000000000000000000000000000000000ec013f22e64a4d4fb6f964e8319feb1ddbcfb71329186545d9b9d7f97d1f6a56c8aad03d20e9c30966ca932e1f2bc670000000000000000000000000000000002f78becf8a5717fbfcbe110bd6d4ba683658c1a45afeaeecf7742502d3df54b262de4fe30bd41ed0019cc79b595b5ad000000000000000000000000000000000dbae184899af1ad6221b75fc62cadcd61c623e011672b691a5aa498684f49796220fc5a73ea7170ed2fa44b9f3c39090000000000000000000000000000000009003b42c08b5c7d3ee9f6abb96e08e6f537da25cd0cf7eb85a49067746c03566e133b54153380286ef5725db5b41058000000000000000000000000000000000f09b7b754c255e0e3b8435ade64d6960285759495659dfdb9b117806397baf8d3c87e30bee02c9e1b22fa3efcc58f300000000000000000000000000000000003582c08a8de4bbd20ebfa833517a75682618fba2702b6c71a4785f70dbdede4e86ad8e04aae1f50a6bb75842ab74aea000000000000000000000000000000000ec013f22e64a4d4fb6f964e8319feb1ddbcfb71329186545d9b9d7f97d1f6a56c8aad03d20e9c30966ca932e1f2bc67,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000002dd02e23d8a9b7aaba94e8ce97a2d988291b6efb1d4d8d1c53b65581b737f992a428cb72ad38d4c6d470d6b50c869f0000000000000000000000000000000000661ddb1f0edbaa208c5e1db143ff41be5a35442da7b3e12d2928310ba5b64847f4909be93f860858f752cffce5e73870000000000000000000000000000000018fc47e1aaeefc1ea653eb42543940ba58044b247eef2627331142988f3a1a4fe72583738c7caa00c562d010089754eb000000000000000000000000000000000b5f8e9d774d99c3b6d224790d5c48367d68167aafc309ad8b351d1de8b601211737235bb0ff1b01e508ecf36a40db5d0000000000000000000000000000000013509c76fe4383e47d8ea35ba6ebcba13579bbf43cee0cbe27291d2601c3d74428bc9d5d1200718c86977abd16cb77a7000000000000000000000000000000000efbeccb9e9f348ba98ce0fd191c2e81de4925d7185f01b39a51aa44b30496f1fa3be4582c539889bef7b5783f730aa70000000000000000000000000000000002dd02e23d8a9b7aaba94e8ce97a2d988291b6efb1d4d8d1c53b65581b737f992a428cb72ad38d4c6d470d6b50c869f0000000000000000000000000000000000661ddb1f0edbaa208c5e1db143ff41be5a35442da7b3e12d2928310ba5b64847f4909be93f860858f752cffce5e7387000000000000000000000000000000000629fc2184297509e1dc0707b707067fa8b9a079d95f271ca230c32705c7e783f91ce1ef0323aedc6aa2febf750392b8000000000000000000000000000000000f29cb4bdb7d53671f9f1b1ee514cc916a657b7c17f298f409ad92ad7b2ca36b0298bd0581db7837994b781b829980c30000000000000000000000000000000014b839ecd27f2d6fdb92a36792c62ef503fb0189d3174447c4b1132e5f66d7970a005e315e6906ecd2ce6c72742d210500000000000000000000000000000000091bbfcfbd929cc8ecd000cf8ccf083c2f8cbd84f19b48b1ad20781e675ca7a77887b962435520e3f707fc0631fdc8f1,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000f67855b0cf915ab52190c7e69129d40dbeffae28fe110745edefacdca42bf979c5c5da1c6ebd78b43667cbfe360874c0000000000000000000000000000000014c5523f37b011c632e9e8eb08611e5a244ace2746264706b92a5a933b34bb9932c95c493ea7e8fd049d80acddd05e860000000000000000000000000000000012b63d867bbfe5505a83f765b85b0e8f182c796857f11125e691969c8e81eae927a5e1b137c81473e8b99ea0727c873c0000000000000000000000000000000010a8241f3b30c54a5d2fd7adca9be47b001f2268973e955ffa61d57793256a2d82fefa5e449548c64fa5aefda6d933220000000000000000000000000000000008e7d2f2e34a60504a5437275f358d0e742c445080c5e46053ea459893d6865e8d20906b2b58f1d1446a100cb1c9a513000000000000000000000000000000001369bfc5f24e2a7a7ace891444764ca32a32513c8ddf654f418c6eb7690e2cba77a4c4d4b98eb546d4e4046dd3c3267200000000000000000000000000000000153310de30b7a485753dd8443f8638c12b21083f6133a1c093648bcb566b33f73631c6fc558f32abeb0d6df8430e61a900000000000000000000000000000000005be397e9f77556ad952dba0540f46cbc7db910d5203cb976e168a7be3a3b8557c5f08d51cca9379552694a291d67fb0000000000000000000000000000000012b63d867bbfe5505a83f765b85b0e8f182c796857f11125e691969c8e81eae927a5e1b137c81473e8b99ea0727c873c0000000000000000000000000000000010a8241f3b30c54a5d2fd7adca9be47b001f2268973e955ffa61d57793256a2d82fefa5e449548c64fa5aefda6d933220000000000000000000000000000000008e7d2f2e34a60504a5437275f358d0e742c445080c5e46053ea459893d6865e8d20906b2b58f1d1446a100cb1c9a513000000000000000000000000000000001369bfc5f24e2a7a7ace891444764ca32a32513c8ddf654f418c6eb7690e2cba77a4c4d4b98eb546d4e4046dd3c32672,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000f3300926ec62bbc0a73e4e0404de3a55dc0ad4fdc393b291ccf9f80818b6a69c0a3f9c6edf024db295a353b6aa71a5400000000000000000000000000000000195b21606667c62a181b275184014fcef97218b451c3642e2e4dcf5502d03cbcc88839e827732feb32e77e52f702529c00000000000000000000000000000000198fe6684d3de4ec9c9ed5c59c9e662c4eb1b026995859db3a753ffa96c6cef7a063a607fc54599f706820fb864d7b0500000000000000000000000000000000116af6c03511ba2bcc32ea54c2fe2bedfb0848d2ee3017547cb25acf892400203e3ce4ea1986ecde0cdd383d42b61e180000000000000000000000000000000004a22ed8f30766b6b1dfc7286616066ccc262875e3de42e2c9528f6d23a7fda67ddb371f9ec419ae4dec48a354ffe21300000000000000000000000000000000086651d7ab0a4b1dfb9a56e42443f42d48c1f16866338d997adba078736d32bf4387b95da2da33e714662f800838a077000000000000000000000000000000000f3300926ec62bbc0a73e4e0404de3a55dc0ad4fdc393b291ccf9f80818b6a69c0a3f9c6edf024db295a353b6aa71a5400000000000000000000000000000000195b21606667c62a181b275184014fcef97218b451c3642e2e4dcf5502d03cbcc88839e827732feb32e77e52f702529c000000000000000000000000000000001367e0843d866d010ab03723026aa9ab1f930d3579daeabadc1fdefc06047ade30b36326d79bbae74293d3daf2e6c7a4000000000000000000000000000000000550be918ba9e28ddacb89ec526db63072bc14a62ec7ac06775f951de5b32af93d2d8f95389a6384cde62dffb941fb5a0000000000000000000000000000000014f59aa4f0603d5f166caa5692d9b068ee10a6f45670c6f4d492a4d1fa7a13a5146efcae33a841b5acf75a32b853b2770000000000000000000000000000000010ca0d9ba50c730006c95bc5439e2d39a40a9055ddac935a900bdeafe7141990db20ad0a840d3297c4b9b5f69aada6df,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000b9590b1d0d292d9967d759060a551f4e8e4c1c0066a9a3c0be515085847fa26b77462e3bae9e2621f28e01f897df0bf000000000000000000000000000000000a00d39c6c14d18dc5888b8a8835c3ef6f83ead2fa380be24ae857677b904b3868ceabdbb3abf3c186c5353a67fad0a60000000000000000000000000000000017d978d60fc89b0429c1a6424231fe9274cedad5d78d9c4ac5aa2dd5e70e8238a0bb1904bb4b6ee5de5cd1ac514c62a8000000000000000000000000000000000d4ce85a95dbc40f405f4e7ebf9121cdcd22766737c39618ad0fb3e10a6e53be1faceaa96073b2a877ab808483ec9b6f0000000000000000000000000000000016c61599ae4da787fa6db233fc28f5c56f7133d403901800ab5fa19d058fb27ecb34ca2e56ffa7628ed004c9e62092700000000000000000000000000000000001e64e4adfdafbb423b1b9f8973738c690713911f68f658d234e57dc35b9554e0f7ba345dd7920b429a12b9c74775222000000000000000000000000000000000c453b5a2f6c721f0303b6b9205e51ccab7829345e0cf13e457491ff35e0f38dc5ac2e5b0d8195e3d322704c38d3280600000000000000000000000000000000092ddd55120b22e2853983dd3dea9bad3e4bf23e46dce297aa3db85856907d1b980185c5a6e02890f24a5463e7895b950000000000000000000000000000000017d978d60fc89b0429c1a6424231fe9274cedad5d78d9c4ac5aa2dd5e70e8238a0bb1904bb4b6ee5de5cd1ac514c62a8000000000000000000000000000000000d4ce85a95dbc40f405f4e7ebf9121cdcd22766737c39618ad0fb3e10a6e53be1faceaa96073b2a877ab808483ec9b6f0000000000000000000000000000000016c61599ae4da787fa6db233fc28f5c56f7133d403901800ab5fa19d058fb27ecb34ca2e56ffa7628ed004c9e62092700000000000000000000000000000000001e64e4adfdafbb423b1b9f8973738c690713911f68f658d234e57dc35b9554e0f7ba345dd7920b429a12b9c74775222,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000eb7d975030858b57bae3e7a8a7e297f9d7d6b2bcf27fa8bb9b73cf60a1a1a5e6638adc726eb2e7fd5500353de95179e0000000000000000000000000000000015c783845a98d2b12a8cada673e1df4c266b34302cf7d004e00612584d0913283d43150337c36dc3912bbd757e6a370b0000000000000000000000000000000014a0222d6d0a809cb5598db18e35f5b7f5c49ec5574fbb5d801d9f890ede23d20c62a22321394b6efd1a45b9780a4efd0000000000000000000000000000000017c8bc1b8f7ebbbcd6203f6ffcc758a787a96533a77290affc18b76fc6dce7c2ba8f169dd8ecdb8b240c92664852bfc70000000000000000000000000000000001a673ad0af4bdd53027b145472d1e8dfa05029b7ba5bcb7dcc63b5e6369b2e693f27e5665167a8dc8b6d3c9b85eccbb00000000000000000000000000000000085efb596145e58b4eae7aedc8f7aff6949f1edf8fbe0c88e6dcad46423cf7b2d5f8f54bbdcf8f1427438e6a4da71914000000000000000000000000000000000eb7d975030858b57bae3e7a8a7e297f9d7d6b2bcf27fa8bb9b73cf60a1a1a5e6638adc726eb2e7fd5500353de95179e0000000000000000000000000000000015c783845a98d2b12a8cada673e1df4c266b34302cf7d004e00612584d0913283d43150337c36dc3912bbd757e6a370b000000000000000000000000000000001425d6d5cfd04d310d8ef3ff1a3b3d227771f3bb3cb552c64ca1debd3e2e75e7a96b9a0d5768ff041098d743de445e790000000000000000000000000000000008b12959963c17ce7247490d9806e0ab02f9aeed8d8faf4591b955885f5aae509358a19c1eab19dacb72cb67b9c22c46000000000000000000000000000000000a7108fb7442fa6c50b472dda60d6c277bba83aa21ac1630bd3df6f116c8a58e60e8c4a303a041b9825b65301d388e410000000000000000000000000000000000faf3042f00060eff3e5e13e1a964c9dd605677596c49cbeccd6d0374c6a4ab9742cac63d1801631d5fa5e00d399fd7,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000f6d131c756d031041ba97dd20719cbfc864de16dddf00d282f6c41de683d193a015a781232ea5513321c131505fa4ee0000000000000000000000000000000008d754d62b8f1fb0d0e9dfe4746d9c5f9e4a296c6799d6379a4a1a07583d0959c62b05011b636b72cdb87d3c92d94f3600000000000000000000000000000000061bf88e4c5f6bfacbf1e2e72566d9c44a001237f22d7f6a7240ee0bd3c8d175786f7c2ace267774fa5615d7bd3ec8f800000000000000000000000000000000192c987bed20d707400d3211e480b8760021a33dfbaef829b1e865f92b37cd3962e56a38d4c06c5ad73bea5e7321b176000000000000000000000000000000000dbc62270cf7623e571f6ebcd29f426f214cf1c8f71edf9aeefbeb6037b7e71bfe41a55828cd4353bae2e1e927812aa80000000000000000000000000000000005f6e7064a9708e20bce8e5002c352b13d4531d87be1320bcf3322d5e2b851a54aefaf6f9ae26e277ecad307c448511c00000000000000000000000000000000041fd1625afa48a446454d6613c17cc6a65b3ec8b8f2125c0eb7b8e5d07968397d43969a6579226f496d9b24dbb71b820000000000000000000000000000000006131c506f243b5ac40354f826ac1838839eee9f61301aabd88e499d40e57df3122edc8b36f0a8b16b72f9ac783efd3e00000000000000000000000000000000061bf88e4c5f6bfacbf1e2e72566d9c44a001237f22d7f6a7240ee0bd3c8d175786f7c2ace267774fa5615d7bd3ec8f800000000000000000000000000000000192c987bed20d707400d3211e480b8760021a33dfbaef829b1e865f92b37cd3962e56a38d4c06c5ad73bea5e7321b176000000000000000000000000000000000dbc62270cf7623e571f6ebcd29f426f214cf1c8f71edf9aeefbeb6037b7e71bfe41a55828cd4353bae2e1e927812aa80000000000000000000000000000000005f6e7064a9708e20bce8e5002c352b13d4531d87be1320bcf3322d5e2b851a54aefaf6f9ae26e277ecad307c448511c,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000c9856c54b638559ce67cffb3e784b9649bbeabe135c89ecb8108341a16ef3c5ac49e9243144792a4f9371f2d6f8f6b6000000000000000000000000000000000e17a67cdee23e13c95e5b951c5f51703660ff614fbba363e5a73ea74b86af6893ae90a929df3d7e2af8852dbad77a01000000000000000000000000000000000c01d2e1592a61cda87dab7fb2a45d7468a8ce56f74fd7c8d401e224b9610d675cbdc0d4719dd2dc10f47547bc641dd90000000000000000000000000000000002d57ac9ac9b4cd7a477e162965c763ec1d0c5752b478449839e0ebd7a1110374fe90aaa2006bd03f08f9242c0419e99000000000000000000000000000000000d50b11e1ea90ef8ef0f7a95ad41ce2cd30cf804e46a96762fadbc275ad513827e6e75b95968a00b42085aa89bb0839e000000000000000000000000000000001250e40358d42dd3a6aa2dc93d89010f2a7b33e5b426ffd7e6eeb9bc02f8f22fd6e91c4fae603f14ed682617dd503eda000000000000000000000000000000000c9856c54b638559ce67cffb3e784b9649bbeabe135c89ecb8108341a16ef3c5ac49e9243144792a4f9371f2d6f8f6b6000000000000000000000000000000000e17a67cdee23e13c95e5b951c5f51703660ff614fbba363e5a73ea74b86af6893ae90a929df3d7e2af8852dbad77a0100000000000000000000000000000000048dfa619f3f77c794d119ff97e04826b5bf49d71591b778b502205875b97b17c9c9d2ae95c8d7035e9d2ade10a511ff0000000000000000000000000000000002fe9b3108c8911b07e4ee52a8d4df17bebc8153f837665513ad5c8af53cd7387100204fafefc2febb2f5e18c9d958b10000000000000000000000000000000016c98a41fac6665657b00bfe9336942e7aa145bea3131224ffa35ec9b9cd4d629b4ceeca98a15ad07e03ffcf898f8a390000000000000000000000000000000011a0d16ccdf98beffdb0953c509261f18567a1656acdd895395b480ebf8843e7d3b965e2151c58e9b610e9e3b5491832,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000f4eebd0bb8233e020629f72258d3cec7fcd3c181fa913977a405ef7437f6fdc0ee34fe6a7e349730e695f383e4478ad00000000000000000000000000000000080577fec3a6cc706037b43cd39f4bace98191511cb26cc606c11659b63112b519123a00b62158ab7a24dfe086705b470000000000000000000000000000000011e8ecf1e341f0146c59a79a8428bb01d2399d3f87d90d057f63e6cb9837432154d17975f70df175a016735caf85120a0000000000000000000000000000000002a5bd53e4f4c5b9682e1af1f7e09dd305e7342d1688f62885b5e59f173a9fc731cec481559ad693030004a5fbd90a9d000000000000000000000000000000000f9601f95e12bf05c35deb204558d44a60fd630c05f4060b7bd9ff943946e8eab507422afe00a3e7706b8ed013f712c20000000000000000000000000000000003bf6fecc0c7414a69c2b48e2c16e88d988ea8ae9d8b59017ecb89394732a20e4321cb5e4fb071aec7d2736220a455370000000000000000000000000000000018fe22fe0b39f508823e2332712f988efcce291d93c416c544272e88cc0902d79e41b01af005feddaaef6c42a26c824700000000000000000000000000000000164fe8d2934cda6f0b863bb42d13f91c52a49706182f8d337d6a629da65113818d1c177508d6735cc86a6b3837ce49320000000000000000000000000000000011e8ecf1e341f0146c59a79a8428bb01d2399d3f87d90d057f63e6cb9837432154d17975f70df175a016735caf85120a0000000000000000000000000000000002a5bd53e4f4c5b9682e1af1f7e09dd305e7342d1688f62885b5e59f173a9fc731cec481559ad693030004a5fbd90a9d000000000000000000000000000000000f9601f95e12bf05c35deb204558d44a60fd630c05f4060b7bd9ff943946e8eab507422afe00a3e7706b8ed013f712c20000000000000000000000000000000003bf6fecc0c7414a69c2b48e2c16e88d988ea8ae9d8b59017ecb89394732a20e4321cb5e4fb071aec7d2736220a45537,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000d6e0830ba9839db89621518e1ed86e9d035d7fb03b18d8a615acd58ff5c8c3dbdcf1acfcb8a910e8d3d0da770057cde0000000000000000000000000000000018c38d6e458e22cdd381010568606d26770b9eaaeb38e02a80cd0a0d584577fca7b391bbabe902825a3338682f7d3173000000000000000000000000000000000e5d5bfbe5ab3da8c033663cc457cf69062e1de6bcda6420826301d4e5fb4c47a5c90432f15608aa50678ad083f618c700000000000000000000000000000000146cd56ad5d977fa6471f7c12ee3fd66dfbe4b276b846cf4a74619cfae4a5101e85d01db615e0e6d28a5eca7a92cd05d0000000000000000000000000000000010fa99a243f1de85f40bf6a08e3e9ed3e478562468f0975bb79b1b80c9eef8c433c18ccf6e5149eb99c21f74494eed6e0000000000000000000000000000000018504d4687cf9f055c5cf8360fda2cb2123ea3a3e9c8f58853a68063e60a7ba24f2d1c153090ba2e77156cbb5ded79d7000000000000000000000000000000000d6e0830ba9839db89621518e1ed86e9d035d7fb03b18d8a615acd58ff5c8c3dbdcf1acfcb8a910e8d3d0da770057cde0000000000000000000000000000000018c38d6e458e22cdd381010568606d26770b9eaaeb38e02a80cd0a0d584577fca7b391bbabe902825a3338682f7d31730000000000000000000000000000000016267be431a654019b3f02389fb2f2f307f3bb56590c3ff1924554b2ee6fbbb68381b5ba4a8668fc541dd7e3fe9afc9a000000000000000000000000000000000c41d1daa258be71001babb484d98501c9ea015aad96e398aa6015b9ef618f6a56a45d45383dc34c70ca05242490ae18000000000000000000000000000000000dadc282d8cc0c066f28881cf440fb5a621449dc16488d02e34492fe8af53fd1749886fe6df2e377190e4043d6e3dd290000000000000000000000000000000018a30f1ae8927af27147ee5ea3c7aa848b0e303d16018fc2c3ca4bd088ec5ad3a808e7699ca009a4bf6f5b707edc1fd8,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000009f71faeb58c4d442272ea0116a03f106008ed68030bce1bc53a3964ec4f9758f508735c8c17017645ccb77124b46cb40000000000000000000000000000000016a2ea9e548342538ccfdae6806ec9ce0b7b892875155f898017929d7105001e8de041bfcab7398cccd060dcee3b6e84000000000000000000000000000000000579462f03502615d26d76e05c758a7f835e4e70f1adfdec8c7ef26580544326d66ba4e23be3c078e1f187ab498ab9dc0000000000000000000000000000000000d386d0af32f630bdf6c13ee82fd35e42961ec4b11ee8fa196d69bed775b8ecfe74409693c531631aa716957e5fe6d7000000000000000000000000000000000ce8a020608c1e7d70d7a03d11b84f48d6b3b77c5836b7c914627f3a84d3d0b3de513029c1379b20ee38a19928e57f44000000000000000000000000000000000dd10882001be7fa52ff21f1a0adab02e688539f098901fe515b61fbdbca02c4146f6c17f7ad7cf59f5e8acd85da60b000000000000000000000000000000000128e019ff92e7171d3c791bd4cf75b0f47c2a9d8722b4a8279f1178db6dddf8a4c00083a935168518a1c26a56b23624f0000000000000000000000000000000008d0c5f3300e73682f4756e6ff1d6722dde576beb587301ded34427d6935e59e76cc8a8cb0ea5f659db9ad5435851e53000000000000000000000000000000000579462f03502615d26d76e05c758a7f835e4e70f1adfdec8c7ef26580544326d66ba4e23be3c078e1f187ab498ab9dc0000000000000000000000000000000000d386d0af32f630bdf6c13ee82fd35e42961ec4b11ee8fa196d69bed775b8ecfe74409693c531631aa716957e5fe6d7000000000000000000000000000000000ce8a020608c1e7d70d7a03d11b84f48d6b3b77c5836b7c914627f3a84d3d0b3de513029c1379b20ee38a19928e57f44000000000000000000000000000000000dd10882001be7fa52ff21f1a0adab02e688539f098901fe515b61fbdbca02c4146f6c17f7ad7cf59f5e8acd85da60b0,,,invalid input parameters, G1 point is not in the expected subgroup -00000000000000000000000000000000167a40d69e2d2e5683ec69af7b226c5456d05241d9c9eb24e988ee2dba845eab361a956cdea64cf971dafea08f0056260000000000000000000000000000000014e5b8ae5032a924da081d3063f31889da110d00330903c6f988684b7d77b7b1bdcbefbf70941d0eb5a34bcb010a3bf200000000000000000000000000000000043a000741027fbd191e2399b7cb5fdb4db3728d81d8b9d25362e8a1d397ec99d1b2339a3a511d0969e7e727f98d4163000000000000000000000000000000000cbda70eab332bf962d123aaf08b8b96680055f1946dd5fdb8818fbb330b816d83062ffaa79e18f1f4f6d53deda53cf200000000000000000000000000000000160a7048e508da288270e8ac5793e9461eaa282b85ce5350b6a661209efa6699874aae71515dc4265125d490a5771ff900000000000000000000000000000000041aa7292f258125d729c1761a3a6f7979a7a92ff179be678ebe301de3ffe12e4a863becbfb2bd0067e42aefc5f5617200000000000000000000000000000000167a40d69e2d2e5683ec69af7b226c5456d05241d9c9eb24e988ee2dba845eab361a956cdea64cf971dafea08f0056260000000000000000000000000000000014e5b8ae5032a924da081d3063f31889da110d00330903c6f988684b7d77b7b1bdcbefbf70941d0eb5a34bcb010a3bf200000000000000000000000000000000158feb06ab69f5da37037c554aa8b4b511e9de7e13a08c2f9a8899f5a504b191195e4de1ab7d937913f60e24a1b3d3f8000000000000000000000000000000000beeea216d85a767af2facfa7fa0399c095a23b7a974ddc3d36b7e79822d7691e53f85c976b8cc948e155f196b7f168c0000000000000000000000000000000009802e94ad5cd6b071a0911cbbc1de29a79a5a4fc145cc79db03119c3c8dac88fa3740bdb35b0b0e6e34127ee1bb081c0000000000000000000000000000000004599d1e0bfe642ff275fbf1dc86bbf83b87c241de09570183faf4e2c1cefc6b8b2354aa2be4aa9f69d6d61546d3a685,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000130761fb4d4720b8e69b849e1472f15c24cf909920c598aaecd34c5b420a1989a6ea95f89c362a61e4a11f88982f9a6000000000000000000000000000000000d707b24e8720ecd4a14d9f658060303d233253caa63bafd0f475b2985fcebd326924c936a9d66b21b9a75085aaeb54e0000000000000000000000000000000009faa74f66ec0384f0458893c0026f73688c764e8df9ce056a88a2ed0b84ed8f88d1b683443a3269a3db838f8aeb808a000000000000000000000000000000000949c4be2708c1aac86aff39290ab6a8e0f332e7a098bbd64227a175473d9dfe136e07548b282f69a94a15e2c32dada10000000000000000000000000000000014f2c7c7da781e2f50803e3a948381c3c439b127949f79824df1e5722c206efccd6c0ec5dd75ef63d8b1fa301c83356900000000000000000000000000000000176753460d241f38aff41bafdad51688ab0dc9a5fb3643977c7b9d282ad4532fcca1e725715227780ec28bf1c32bbc1d0000000000000000000000000000000010ad2405965f283c845edf92cf34508c0ca625816690d739fec9776d261784a946e083112d11c0776edd04403eaa5b820000000000000000000000000000000007e400896eaaddf797643b05a53f612f73737a2c438762d3f6216d53761f28bc88f402a4f02f36d26bbb431616b1b5690000000000000000000000000000000009faa74f66ec0384f0458893c0026f73688c764e8df9ce056a88a2ed0b84ed8f88d1b683443a3269a3db838f8aeb808a000000000000000000000000000000000949c4be2708c1aac86aff39290ab6a8e0f332e7a098bbd64227a175473d9dfe136e07548b282f69a94a15e2c32dada10000000000000000000000000000000014f2c7c7da781e2f50803e3a948381c3c439b127949f79824df1e5722c206efccd6c0ec5dd75ef63d8b1fa301c83356900000000000000000000000000000000176753460d241f38aff41bafdad51688ab0dc9a5fb3643977c7b9d282ad4532fcca1e725715227780ec28bf1c32bbc1d,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000220d192e0c635f05870113aac899f996622cd21ad251fb4c300a0ae0051dfd93b0b622f54e149fc4e5bf280ef31b0c6000000000000000000000000000000000dcfd7def563a0937b5173d20f830e6a2350a9d6f1b8a2193e5f755142e850bb7f95519ca187dfe735c197c21688528c0000000000000000000000000000000002479a989dbf27141bd9f467447218dfa6ef60781a7231f089d5f1f1d8dca2ce9606a75c09f63f37f9cc1ee61dceb32500000000000000000000000000000000037c2f1b96170f6847138232bac663e4940bca602717c877f58ff7f5259778246085d499ec6bbeaade18f738df333cc700000000000000000000000000000000115a30e7b71e48efc7166b9a8d2e1ecec6c6e4c058065a18277ca547cf1ebc193e635eb9b65d14c9c94ebde3c83a55dc000000000000000000000000000000000b68916150436f74c61b071a339909f78701d1f3045f7201f076991d7447570fd90887126ca54d96c1310e59ad489190000000000000000000000000000000000220d192e0c635f05870113aac899f996622cd21ad251fb4c300a0ae0051dfd93b0b622f54e149fc4e5bf280ef31b0c6000000000000000000000000000000000dcfd7def563a0937b5173d20f830e6a2350a9d6f1b8a2193e5f755142e850bb7f95519ca187dfe735c197c21688528c00000000000000000000000000000000147610c1075d625dc36388a2bd451ad2c15eae8cbd30393bb9fa30fc233b29a0f5483579752a748bc0f5ca9c90875e0e0000000000000000000000000000000003dff69511f2a53e859b6769ef4c257acf31062eb72f8668f57da60f225ac052badef9df25d43148b4d3baa64c29eccc0000000000000000000000000000000006d2a71dd9c1b302e22c4cecd14dc385e068e63e28e167c060de3ceac8410461d83f961c9292cad30afc0084855ebf1d000000000000000000000000000000000890ce53931aa18e42f00379b40c8e205582f71707a67761acced851fc91755505ae960951dec4ef46353b66e0b928c1,,,invalid input parameters, G2 point is not in the expected subgroup -00000000000000000000000000000000050ae21faa31371d791e3f6163f1c18c577367badb337aa6fa7c8214ec58bacfb24300a81d8226e81d7f47730c734386000000000000000000000000000000000987a0c7abd7c72140bcdba9cf171389ea7971493187c567b0970f05d129b4202124d72bd01038bc77023171de379762000000000000000000000000000000000d4b71595321913e94b9e6ee6ae2391cd5037e8b55e61fd96c745539bcb4bc4fcbab678749f6d47fd2c95001da4715f70000000000000000000000000000000005436e1be9029a2f7cfac51a305fbb7e760a9171c79a5bfce6b161493fb2855df09b3345ddbc8b04318c6b2e0225b74a000000000000000000000000000000000b8f317d36c50c8d039ad137f7d9adbefb3fc147a9cfd6cceb02c75b95fe307c3d6f673a216484f3211f045c2ba9012c000000000000000000000000000000000156bc67e17c8eaa905fb7d9f3f251cc81eeecc86de791c8be30c34aea896755fe2bac28cdb035222afe6237614878c300000000000000000000000000000000065856fe1dcbef934cef47b177ecb7df76cc8796624400d5c0518aa9438bcadf397234808d099bed89ab674560ffbb1800000000000000000000000000000000071b2ff64379ed3e20cda000602c3504616dd673aebbe7690e797d6428ecfbdb29f11138169f3462dffd319cad68b96e000000000000000000000000000000000d4b71595321913e94b9e6ee6ae2391cd5037e8b55e61fd96c745539bcb4bc4fcbab678749f6d47fd2c95001da4715f70000000000000000000000000000000005436e1be9029a2f7cfac51a305fbb7e760a9171c79a5bfce6b161493fb2855df09b3345ddbc8b04318c6b2e0225b74a000000000000000000000000000000000b8f317d36c50c8d039ad137f7d9adbefb3fc147a9cfd6cceb02c75b95fe307c3d6f673a216484f3211f045c2ba9012c000000000000000000000000000000000156bc67e17c8eaa905fb7d9f3f251cc81eeecc86de791c8be30c34aea896755fe2bac28cdb035222afe6237614878c3,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000e4bfbc392b1de6b17a32387d694f634cb484be4531f425d72833a30ed5aa73a958d5081b30cf98484762ba51542f87b0000000000000000000000000000000010e6acae9df1b5567854f4bbca0ab07c6a0e726bc6ec7a1d2ce8b04e1677776d0ee2642950db040365d581a52a41832300000000000000000000000000000000036a2ac8ecf17fc72ed792c0d8939060117aa0d6c13854fdcf56ed0d1ed3b39da9a67aadfdff484850f9cdf439495712000000000000000000000000000000000a1bd875b74e1ebec19591eb137e68ca7f0db1b3056d341b6bad28c3f45e87688e73fe28e9ef44c7d494442ee0b9472e0000000000000000000000000000000002e26e5a36c008bddc431048d999b7fb44961bb4d931b2dec0cb1d1b0987587f44cd31d429a6cef05d3c060ac828ba7d00000000000000000000000000000000050640087ed6c04ffed759f63e211ff5880c8b06933c1e812954a7a4240a9c644175c4ca3048a4ed68d034f6cbdcf175000000000000000000000000000000000e4bfbc392b1de6b17a32387d694f634cb484be4531f425d72833a30ed5aa73a958d5081b30cf98484762ba51542f87b0000000000000000000000000000000010e6acae9df1b5567854f4bbca0ab07c6a0e726bc6ec7a1d2ce8b04e1677776d0ee2642950db040365d581a52a4183230000000000000000000000000000000003fea73d9ecfb879ea601865d3279ef9b271fdeb14e1094745d5718bf214f1fba99245746716bbf012e2ccff5e22887d0000000000000000000000000000000011b1aa3049157abfa01f3bef33583635873d4bc66801785f41ca51b9a11d95b49a8bbaa543fbe68db86c3560ae258954000000000000000000000000000000001740661de7e1b6e1eff626acc4e37c877d00a0ceb8008d99e76a1dfe826b4dd0ee69b150535caa20386d644394dcf6b800000000000000000000000000000000090c0bc61286187a58f2cf49e2ce6f49d721b4146d973dd7716db271da770450dcba33b7aae37d6842a43063c88704e8,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000002cd3682c1f87aac1ea91b3f4ac577f0c9531c7702864c444b4163435b4770c9a2ebf94fae2d45a63adecc314d9d536400000000000000000000000000000000103a1eaebc0ee53e21d5bda78bd912f20cc28a13e5e209e062a52ddec3453fa9c364a6b403a68d9db8a40a07755ee1eb00000000000000000000000000000000024494aab30849df790185a4f939954b724c387c9a366fbe833b628577654174f705d05e7d7dbcd29b8873aecd55df0b000000000000000000000000000000000863054fe3e4838d2caec7103e3d0453e86a17fff0dfdb84dd819f31756032e9e97b7be89b636e5e0b642718f6da217b0000000000000000000000000000000015c8bb4fcb6d9cf941b722136d8d76d847fd6d5c643f4c0049c9746e76e49726fd463ce7899f4df66d04e5d48e523e6a000000000000000000000000000000000f101bea4e1bf610d2782ede91da95eb2b0be9ce60485465b9e94cbb9530b416c4394862f0ba7ee8067bb48e94c07c530000000000000000000000000000000001b32ce5c51441e1abbbcc0b6af95380f2de24876ba377ebea44fede8886acbe23aa18681bb08130252bc04193939853000000000000000000000000000000000e5d718c9980140b41fb971fe596070982bf92937df77ef44040ffc27162bb443a60f5c64411ffefc24524ff32fa17ff00000000000000000000000000000000024494aab30849df790185a4f939954b724c387c9a366fbe833b628577654174f705d05e7d7dbcd29b8873aecd55df0b000000000000000000000000000000000863054fe3e4838d2caec7103e3d0453e86a17fff0dfdb84dd819f31756032e9e97b7be89b636e5e0b642718f6da217b0000000000000000000000000000000015c8bb4fcb6d9cf941b722136d8d76d847fd6d5c643f4c0049c9746e76e49726fd463ce7899f4df66d04e5d48e523e6a000000000000000000000000000000000f101bea4e1bf610d2782ede91da95eb2b0be9ce60485465b9e94cbb9530b416c4394862f0ba7ee8067bb48e94c07c53,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000006e340bc57495a5c01bd44eb6dee60e94feadd69bd0274e7c9755f7b0e7b4e59eb70a2cd7e4da9d1a5f60d93a5df19080000000000000000000000000000000013d7c393a2191ac8d13a0743fecd768a7e15d279be409ccea1d58ba39e91f592b425955ddfc8443861a2899de02cd0fc000000000000000000000000000000000369067d9012509bbc75333fcfa37cd42dc3d6331a55b4720f9efb937916692ed7c7cf4739142ea13fb9130e9dae92fa0000000000000000000000000000000005306d73dd33e26ece5d8cf2ea8d7e25976f7b95dc7091420c2e91b1d0b2ef96db69a364c3cdc3b24a49ec5e307553490000000000000000000000000000000008a9fe15ea4e16e675c42c25b29655683844949b9aff4448f0b79ff08ec2a6526cad973f80123943b863ba9f30b45666000000000000000000000000000000001754caabe499e1ad04ae65d696507096939dc826578db55738e5024601eb052a9fc15f20b601253533847f79a5f6a6ae0000000000000000000000000000000006e340bc57495a5c01bd44eb6dee60e94feadd69bd0274e7c9755f7b0e7b4e59eb70a2cd7e4da9d1a5f60d93a5df19080000000000000000000000000000000013d7c393a2191ac8d13a0743fecd768a7e15d279be409ccea1d58ba39e91f592b425955ddfc8443861a2899de02cd0fc000000000000000000000000000000000ddc7df1bb36d54beb969a244a67c3ae87cab2eddce9397869421999497ab00a3e0ee29e384f3182b52158304790b05c0000000000000000000000000000000006f527de4412dd61845ab1e4536a114c7ac2bee2f3d22c16c660b3189b1666849f70462d6d650846331dc630dfaa075e0000000000000000000000000000000015aae1fad9e6cb3adc8bd93c432c9321a9d2f7cb961671c8e517da7024d1e35b519a2cc662d795173441479fa35f2e830000000000000000000000000000000008485999f40a4a363ddb3da273f7522344f284fb5bcee383a590c7c1287baa10f21312428d6818eebc96ec59d716fae1,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000015845de9692590d7fbf4187b50f4b2d067983b0a2209ed2bc6d60914be106decc5dfefba112baaf98ba3bf9e4d102b660000000000000000000000000000000004f2ca0858d056f769bc8e6ebf7cca745ca647ba497940b25b31c0541297626cd26ac10f8ae8476b5c868a95226da290000000000000000000000000000000000b1374a47c7c1c833f3856b0fe5ecaefaf2a8f96148eb540482288b56897d9e7e4269ea3a2c3742993b751bd9e484f2d000000000000000000000000000000000bc7fadac70d0a401e61683562cc83ffe107924ba1788bb6e06b0c60f22de0d93b10b63afcca343cad0572209b03b12b000000000000000000000000000000000c22c75d826d2700a8bad4e9c271d8b505ab2911dc257909c69dfdde2bcf332e5f13592eccabf578f48f6078550c1e9c00000000000000000000000000000000057db54159019d1e291131d28a936ac1337f2884f0c4bfc4d8adaa75bc0edf8b0f3030725e33a3d1a2e7e9ea39512fc70000000000000000000000000000000000232940188006769a382a4958383aa6702b2cbfb9c2907a989938ac618f23e241767b021e8ae11c23617ab393d4f85a0000000000000000000000000000000016a672061fe76ed943e36b2d6fa4aadf579db96eba5e4c60cda2884ddcbb0f37668638a3167d8858cd296917eaeff8e0000000000000000000000000000000000b1374a47c7c1c833f3856b0fe5ecaefaf2a8f96148eb540482288b56897d9e7e4269ea3a2c3742993b751bd9e484f2d000000000000000000000000000000000bc7fadac70d0a401e61683562cc83ffe107924ba1788bb6e06b0c60f22de0d93b10b63afcca343cad0572209b03b12b000000000000000000000000000000000c22c75d826d2700a8bad4e9c271d8b505ab2911dc257909c69dfdde2bcf332e5f13592eccabf578f48f6078550c1e9c00000000000000000000000000000000057db54159019d1e291131d28a936ac1337f2884f0c4bfc4d8adaa75bc0edf8b0f3030725e33a3d1a2e7e9ea39512fc7,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000018611593c7663a36330e0640bc912221a17d0ec9d2a250f1701303249655c7088bdc07b024878a260753d1dde306fd4900000000000000000000000000000000069d26308af5907c15532f31dca8c884b9e54a0da5e428c66fd79d980774cca106e2ccf3f93fe3e01669c594b9770a800000000000000000000000000000000001a38d296c4b7b8351164b935b915c08caf6af9d5233ecfe609e4ed855589bdbc9fb0adc55bb5cc6a2526bd82ab9287f00000000000000000000000000000000184ac28f62c7101bec49879af5da794740f9ba99afab4fcb576fa1149f3b701079915934c624f022b0d3213adc884c2c0000000000000000000000000000000004f64835227f459e76aae3397dfe53eddb1e97c8afd8beaba09382fe79ab378c3f03d6962dfee823c426cab426e51d2d000000000000000000000000000000000577263fd875f6388b723f6abc78aa3b0cc2e6b0ab53beb59286e30d1e982114c161fc0ef490bb1347fd8a3f3cba72710000000000000000000000000000000018611593c7663a36330e0640bc912221a17d0ec9d2a250f1701303249655c7088bdc07b024878a260753d1dde306fd4900000000000000000000000000000000069d26308af5907c15532f31dca8c884b9e54a0da5e428c66fd79d980774cca106e2ccf3f93fe3e01669c594b9770a800000000000000000000000000000000000c072a812b26927b5a672359032e71597002d8c45572db6c575e25c81181a522ca304867b1bcb583c58b2ad6bb1695d0000000000000000000000000000000003c4f5f548f50e835f402105cbd315081e0e8773dd91f3874687ace6fd5ffa66b6ebf6dac4580357b870f8835ed15cdd000000000000000000000000000000000f039e2e73334386b28ed4cc52db09b69c942c0c87f81328a9b7fbe8553eed48a60224ae9d52baf4f62a3fb0d58d451d000000000000000000000000000000001974da8867204f048b81d0c7a90d224dc5b87f3c4f47d1dfb09afc292430bf51d69e3538fdd13ca0749dee76c2ba9b17,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000754f3a9ea93a01fa244ef6badeac64fbb4dc81d3489c4195a01148e268e2af46011e6c593b4b873fa1470eecc6f79ef0000000000000000000000000000000018043830aa55a8c7efd5dc246622c71bbb4bc6a5d69cf594f46f62d8c3e2a5d4ba1d3990b5445f8b446e404a00259a8a000000000000000000000000000000000e49e94cfa35d8ade2b76865cc8be04737d00b48b195078c8085cbe782232a544cdb548373bd8ad0282674ba5c96fe0700000000000000000000000000000000047d59661f095c41bcc27da5f260f13a3fce334bba216b45df548894bdebc691fe779ccd63d99a9872973ab165a90c01000000000000000000000000000000000772e9a9c22bc7352fdf74915bc464de99ecd96420ef1af6e8bd5a05d73fff89c78e28eb340d4967e906f28afe1320490000000000000000000000000000000018bccff27bf9d7cb2159b9f2d1faabbf8591b53ca8e67e661d9f44f6dba6296e3e46ac32c50128bb5fb076cb8f214e27000000000000000000000000000000000252149178c606d2d6c0311e9f4a66cf348869efc09ec887cf99088ec754c01551796aaf168dc1a09cb741ab3c9d6891000000000000000000000000000000000db7baeeb5acfb22d680e032965a4d417b2f2f6717d3667d786e006327140c1288ff44842142eb1d2730b3be64fcf420000000000000000000000000000000000e49e94cfa35d8ade2b76865cc8be04737d00b48b195078c8085cbe782232a544cdb548373bd8ad0282674ba5c96fe0700000000000000000000000000000000047d59661f095c41bcc27da5f260f13a3fce334bba216b45df548894bdebc691fe779ccd63d99a9872973ab165a90c01000000000000000000000000000000000772e9a9c22bc7352fdf74915bc464de99ecd96420ef1af6e8bd5a05d73fff89c78e28eb340d4967e906f28afe1320490000000000000000000000000000000018bccff27bf9d7cb2159b9f2d1faabbf8591b53ca8e67e661d9f44f6dba6296e3e46ac32c50128bb5fb076cb8f214e27,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000003455a16c1cf9a408bf17cbb0b8ec2a5f24ba41d5b8a06a10750797f3371bcf361d3b6902d73949df3a24f5a8b9977c10000000000000000000000000000000016480e13653604d05f025b8264fb35a2cf06dc6a90ec7751ed80ee81cd064864655d133ce398e293c289a572dd98605e0000000000000000000000000000000015015aeb1965917cb5b55092d7eeb54915e21fbd5b9a62530b3dd5b8ae07d6f491df46e1987f565223a83cbc90f91735000000000000000000000000000000000658266a6bb01958b791b288ea9f5e138316724398218be522bf816ee5b5b34ef4acc83b82959f52792af6940816bb41000000000000000000000000000000000bf8d18b55a57e67c76882f1a1ad845480196f28556ef569a6a6054426bfa39459ac030b594201be76968cc33c301dd4000000000000000000000000000000000fd8b264f9bd71e00e3987cd221d2e9fbbee34ddcc5c563f02dd150451050bd20b3bd3a6ce1284fb0ebff0c6c1318fa10000000000000000000000000000000003455a16c1cf9a408bf17cbb0b8ec2a5f24ba41d5b8a06a10750797f3371bcf361d3b6902d73949df3a24f5a8b9977c10000000000000000000000000000000016480e13653604d05f025b8264fb35a2cf06dc6a90ec7751ed80ee81cd064864655d133ce398e293c289a572dd98605e000000000000000000000000000000000c5c8e759f71292c8b25dca51bfd40daec58d2d2befe991b27993ae32489b3ef70c0c3f873b3f47ffb013fd31732f763000000000000000000000000000000000a78f4e402668544cada859953182f14421c54446c264312daa5f27cb18a3955a277e5620b0f28f4f9bf233c49f3341f000000000000000000000000000000000e27d9b1bf12c01ab05fa5ed5b2e70444c0582aa5b430d0e10feb69dcddddadeec88c024ec87e23737ec1385461edaad00000000000000000000000000000000065984e81590e368aa6de051129761e94ca218df58ec0132ec22aa7d4128b9ace20e7da35c56a674ed1031d202e9f313,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000005a54ee5e3dc05c38ade7a42c71baf5a1467938f97c0cdf0742441cd339f22542b1ca6cd215d385b3fd6ba74ec996a520000000000000000000000000000000005f63d18f8bbc1c7b119ee0d58b688477129b2558be0084865297fe119224aec83b3633a646a3d423029cb52f0294aa20000000000000000000000000000000015e2547357626e6160105e5254d8deb80155c42d7b0c13bbe350c3395317913ccea5db61494aa2634857a8c83baa42a0000000000000000000000000000000000629ebc8d1798e2f9280493d2de7c159c558156782487d307ba358fd2bf696c29518d6cf2f975509bdefa89033f1cfa20000000000000000000000000000000011e3f568b9d1793519d5a8cd3bac7cf35091665f981ecb7a9e942f630c5f18fe7cd9747ff539816993b70573410410ac000000000000000000000000000000000889dedf6f29ed9959d8eb7276ae6122fec5a1bfae72c793902e1e3062be444b89a95129dd59f74ea0849b5a2aefd48b000000000000000000000000000000001963e29f92f6f72be2afa4635221b0d2f6afe9ada4582bd7ca4b77eb77fc4503578f38fb49aa1838751db8cf1ca0b0cd0000000000000000000000000000000009856a48f12966554afbcde1971499ee3ae40c9c5c3aef13bc415fddb97545ed84d5f50d2a26b9c16c4403a487dca6140000000000000000000000000000000015e2547357626e6160105e5254d8deb80155c42d7b0c13bbe350c3395317913ccea5db61494aa2634857a8c83baa42a0000000000000000000000000000000000629ebc8d1798e2f9280493d2de7c159c558156782487d307ba358fd2bf696c29518d6cf2f975509bdefa89033f1cfa20000000000000000000000000000000011e3f568b9d1793519d5a8cd3bac7cf35091665f981ecb7a9e942f630c5f18fe7cd9747ff539816993b70573410410ac000000000000000000000000000000000889dedf6f29ed9959d8eb7276ae6122fec5a1bfae72c793902e1e3062be444b89a95129dd59f74ea0849b5a2aefd48b,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000010df7793a66234599791ae07db9953bba83492389b150a05063105c191c6f32559b9533f1875ed154fa813586e84d0c40000000000000000000000000000000018de32e27e5c97b8b39380dde927e2143bca5d5591d770b2a7a77d7b59bdd533f04c41aef3a5a60df55ed90742869b7400000000000000000000000000000000182f0aa672674c27d8f3fbcc0fc7c1608c01188cf5c28b8ac08d6f99a4e3e214aa3ba61a19607b513b4d01f1d4424a990000000000000000000000000000000000b47be5b5249eab6f67aca9c9349d4a83956550cd21856485132c26e3be3ca133050d79507e2e8cafb67b44a7f4b4da00000000000000000000000000000000060efe7e7a4ca52063b49f6c839666deebe2e8e563de18b210fb477e86420aefa38f89e926cc41334e80f4d47d810d97000000000000000000000000000000000c2243c2a34286b146462a643979a72e75f7ff31f9f043164a5514d3e5da8b0cd891e97af2dd3d6c6f3584b390e5faf60000000000000000000000000000000010df7793a66234599791ae07db9953bba83492389b150a05063105c191c6f32559b9533f1875ed154fa813586e84d0c40000000000000000000000000000000018de32e27e5c97b8b39380dde927e2143bca5d5591d770b2a7a77d7b59bdd533f04c41aef3a5a60df55ed90742869b740000000000000000000000000000000015f7e6dbb904f4f1fbef282667d77c846c0dac6d78f4daaf32123b4326f1c6e42b15cb06ed7b3b46c8877e684ca7f9de00000000000000000000000000000000004a87f0ef3285709a3ded240f529e8e10991a82c7fb40de0bd256a9fafdbc212eabb8121f52c6bf67a45bf36246921c00000000000000000000000000000000156a1d58dd64734149b1e37b1b69fa4ea4452c40d2d041f5cf3de3adadf3bfdf433626fb96c46f9104b1c16114108599000000000000000000000000000000000fc3a0e58ed3fb583e2e1c3b0db5fac2a6d75694aa3d0732243b5a75688fa0ffb5fc9023545b9585df224ee9f6c5d171,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000001639642196e9d6d720e17ace198232d1c0a7c05660c2766b9d28147504308ee48d949755ffcd1c95e024fa299657c8d10000000000000000000000000000000017a5975410b3a80e339b200ec63d7b7d550514653726e3ae6a97a383545118bd4221bba3e27922a826057b244ad025f30000000000000000000000000000000017aa7a3f1ebbdec6abe12abea12ef50a3daabbf96a5f2ebfb517885f0b7aba1e927c682b15521529cb9e1f87c59be99e0000000000000000000000000000000016e23f7effbb9dd34ec1f6974115e7f0d23cc4553d86e6d61a0c98f47d09510e06b3f987c5bcf4bc30e20ae9684da74e000000000000000000000000000000000f3905dd4f99cfcfa6152db53106b4d1f6e24518a822da9388d8ca1dd654a4b8315697328571691f105d1abe9aad3dae0000000000000000000000000000000006bfd10d33df9326a55b35aa6d2bc3e831d4c3b5959aaa35613156e5e19343b74e34ed2670c43ba1a45cd3d91f055c9a000000000000000000000000000000000024c53fb66f77329f70394626073ae298c6aaba115aa6af7bdaf3d2fb74a07441d46eeb398feec036727e86891db2030000000000000000000000000000000016b96c27d4342c47caafa584ec9847c79870eaebcce158535d8da95d7a847ecdc5057425fb3dd862303d1ac03162317e0000000000000000000000000000000017aa7a3f1ebbdec6abe12abea12ef50a3daabbf96a5f2ebfb517885f0b7aba1e927c682b15521529cb9e1f87c59be99e0000000000000000000000000000000016e23f7effbb9dd34ec1f6974115e7f0d23cc4553d86e6d61a0c98f47d09510e06b3f987c5bcf4bc30e20ae9684da74e000000000000000000000000000000000f3905dd4f99cfcfa6152db53106b4d1f6e24518a822da9388d8ca1dd654a4b8315697328571691f105d1abe9aad3dae0000000000000000000000000000000006bfd10d33df9326a55b35aa6d2bc3e831d4c3b5959aaa35613156e5e19343b74e34ed2670c43ba1a45cd3d91f055c9a,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000680d1062d24bb96b09d9dc9791364b5138e7c36c163589f919354101459de2fa76440616351d1d9bcd961673b106684000000000000000000000000000000000ca650f50b670befbf16d65b486e5c98dea6857862cf23d7bdd2dee2abc0855273495b047431ed03bb1c72b5403c2a4e0000000000000000000000000000000015b2586a23d909e6fd7ef6e58595817bec1389faed80db6d59db219435e7fb1b6492178a849c12bf6418341529d141330000000000000000000000000000000013ee3539c49e0c26e78f46c67b1e3993eed56c72dda43936b419e1340a3aa223ca09a2dca3ca56f2f9578b4a3f885aa00000000000000000000000000000000018e5fd242eca2314b3ade4a1e913177a499d72b539907839c5025b7de69efa24b08b3eb1e85fd05724db82b29edac344000000000000000000000000000000000478706e91d6213e4d4fd9a6c5051c88d86c7271aed7c74ef3b43e904f8ccfe4108f94660807316e8f1eabb85b734d50000000000000000000000000000000000680d1062d24bb96b09d9dc9791364b5138e7c36c163589f919354101459de2fa76440616351d1d9bcd961673b106684000000000000000000000000000000000ca650f50b670befbf16d65b486e5c98dea6857862cf23d7bdd2dee2abc0855273495b047431ed03bb1c72b5403c2a4e000000000000000000000000000000001600e44d53c706898736f5cccab585af5d04f7da91cad6f97b991b51adbc22ce27744f12c0a24804b6fc3dcc53011a59000000000000000000000000000000000751b090922b29f5c299340b12a56a77fd9c32f27995a59cd032cd09ead834d9faf5e151fbf7a0d810738de1beba5b4100000000000000000000000000000000114e35fcef45e87312a90fca21fef50c46b8a0f114df5c67ac9872ccadf858f319977138f03279ddd1edcab4602838eb000000000000000000000000000000000145c6cd707efd8d271dda5b9af26173e337a169c01b28a44f5d4ad06b125a05e867f0b1f873bbc048ea6cec06967c33,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000d6427dedfdcd624c896ca8e1ef717e212985ae23a4f830ee466c75b37ea2e994e7653b9717928f1be4583aae73f70040000000000000000000000000000000017be03dd7c9c14000aaec774812a8d8bc4aa2f1ecca9a894fd1385864b28a38091d3fb5706ee7c36086c7d50e35eb5b9000000000000000000000000000000000ce359fe7d997e151b94af2f5e167aa4834caf5a07ff056fe049d4b2c2780b35e8ecf9426444da4725a3e66de6691d960000000000000000000000000000000004c7ff987f866ff3919fb4769cc704928af09406c8f5a39e6fdcde5f4ef8a188cff406f853261bd3abd0f67c6cad1f3f000000000000000000000000000000000914584031ca57b9b0bcc35fbe76d967aee164b5eeeaa5e29c02901194fb0f88f5a249040c37ab47a715d34b2329a2b30000000000000000000000000000000007a42352ff521b8e6267a5d0dd1eadcb63db1fec68cff31bee1b2080b451ac731caf0efb86758b26b0c78df5cee8864800000000000000000000000000000000141d878adfaa6a3982cd0de93b4d64ba840a07c026ca443d6d4c2b6c36cf882e109d80df63b1626c112f9a89809788080000000000000000000000000000000005a5888d22a2f654a58d9a03c68d59cde9ab5e5356b2288033ba58fe2dbacf533e59344bdf30eed07698261d6269fc70000000000000000000000000000000000ce359fe7d997e151b94af2f5e167aa4834caf5a07ff056fe049d4b2c2780b35e8ecf9426444da4725a3e66de6691d960000000000000000000000000000000004c7ff987f866ff3919fb4769cc704928af09406c8f5a39e6fdcde5f4ef8a188cff406f853261bd3abd0f67c6cad1f3f000000000000000000000000000000000914584031ca57b9b0bcc35fbe76d967aee164b5eeeaa5e29c02901194fb0f88f5a249040c37ab47a715d34b2329a2b30000000000000000000000000000000007a42352ff521b8e6267a5d0dd1eadcb63db1fec68cff31bee1b2080b451ac731caf0efb86758b26b0c78df5cee88648,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000da87318eb51b90ca822bff1df4dbc040fb1d74129242d832e1096e813dec5d91f950f44bbb07980dcaaee3366f03a0c00000000000000000000000000000000157d5f5c8ad06af803b9362b22519a23def6dbb700db517c85a663bf1bef9665d6e81e9b02ccaac97f0940d223b83ac400000000000000000000000000000000176835484cf24c47b154b7c35877eaf5194e0e1d8f053842fb5ff8fa833dabebc887f3d34b825fe9cf2c374a2066124a000000000000000000000000000000000d31805157ecafb751536c484fd0c81664de9524a1420c969d54260dd5264bc5454a3234d1e5b090bbb8ee1066b685ee00000000000000000000000000000000196b4f58c12a7d7ac4d720cf9b6c44efdab88e06dad0023a01572cc2ba7bc0a4baf7fa45c06f04ff3d067ba191a84e6000000000000000000000000000000000038cb5d328ac9d1fab9c402b8ed9e72ccd462ca80075132f6be141457ec25a6c84a15e42b78cb64cf05ef18b003e4652000000000000000000000000000000000da87318eb51b90ca822bff1df4dbc040fb1d74129242d832e1096e813dec5d91f950f44bbb07980dcaaee3366f03a0c00000000000000000000000000000000157d5f5c8ad06af803b9362b22519a23def6dbb700db517c85a663bf1bef9665d6e81e9b02ccaac97f0940d223b83ac4000000000000000000000000000000000065c10395b93e8d04f5eb67d8e06e8649139d261ad8fbf5ff2c7d6d364c87837fa8e744834ec9341c714318195896770000000000000000000000000000000009fcc05ee486d42c3b2d480a309e4bb19563f7a27b4a10182ccb2d233ed42943ba472681d1f847249cbd11e4d79ea51f00000000000000000000000000000000053a516998d7c2b2bfa70349bf3f5e3967df827f65044634071450761ae8860e893824b1ae3f204b0ffbf8b091ddd277000000000000000000000000000000000d7cd03cc2cf97a164c7dd65b961df2866e82bf6fa979e56d0ca3f9638319772f56eab2e2134a33515dbcc137da8ec8e,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000be4cb58fd1dab8fccaa410e1c301be4fd2e7bae95cc1717d2aecaa705d717c67d7f20611dd1403d9350798642fa021d00000000000000000000000000000000075100bfbdb3f6271e5d8bcd4472580e56fd507b73aef3c3c5084d77e11a61b69bea0b85ba62885f7da36d223fca20760000000000000000000000000000000007649efeb3e0bee49b9adb13f8e5d7db1c06d7fde08a3f3082194153bf4b3615aff1450e47fae88ac93f55a389a319da0000000000000000000000000000000008334731582fb1b6125d7ee1da0124fe88f0c70a0a3f6188636976c31ba6a72beed927fe598386f328e4ae534729a57c0000000000000000000000000000000010b57d80fce5cdc90bc93b3bc7a1affadd19fb00aeec2ca9a6287bf4e40fb74616986a44f2f7d945f58501a965f37f3000000000000000000000000000000000180dcae46ee41bccd422b3cc2b34cad26f6816dd08ba51b2f12835e7439ae2d46933de28ac04bbcad68a188e7e90ee8d000000000000000000000000000000000a869358fd3d64849fd62e513db8fce1ab2618d3524acecbd04fef6b8c77703258cc557587f316cbb74bc5af5cb5551100000000000000000000000000000000059eb0e90e0910c24ee2145921ccee83707d8f89a188dcaae7d5c75b7113cacff92a2a030e67927bfec0da39f2bf65ed0000000000000000000000000000000007649efeb3e0bee49b9adb13f8e5d7db1c06d7fde08a3f3082194153bf4b3615aff1450e47fae88ac93f55a389a319da0000000000000000000000000000000008334731582fb1b6125d7ee1da0124fe88f0c70a0a3f6188636976c31ba6a72beed927fe598386f328e4ae534729a57c0000000000000000000000000000000010b57d80fce5cdc90bc93b3bc7a1affadd19fb00aeec2ca9a6287bf4e40fb74616986a44f2f7d945f58501a965f37f3000000000000000000000000000000000180dcae46ee41bccd422b3cc2b34cad26f6816dd08ba51b2f12835e7439ae2d46933de28ac04bbcad68a188e7e90ee8d,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000010eeac4d171a17d607dc544c559226db50d40193b435ce7528086eee21ec437e986c89dbe05931083768221e4bf06ede00000000000000000000000000000000140ef3af9f3dfe760e8c9dbe8d24abecfe611699ad337a97481a1553e9cabdb2e8a8cb48bc032bd02738cd26cd1388c300000000000000000000000000000000165bb8a97dd4b60ed7fa432f019f7f09a19c8e7a9b70e7370ae668d4597a3cf12c06fe062d880611e34ad9e586c193c00000000000000000000000000000000008c684f30de5c67f675e98400d854397e8cc6a139dca7e9ee179309a9617ce0ae034bfbd0faba7a2f9e7ee39de8770c900000000000000000000000000000000030e524c87a658e44df117fa0a877afcf8a4907979c932921a631a209dd58ddcaf693c7321c537e7e2a5adafe5761fa0000000000000000000000000000000000cd44b77f2d92706b3db5e374f13f6f12e3b030c6341d31e1c55d627e6af06a1b64498e590dbff08ee6354902263ff260000000000000000000000000000000010eeac4d171a17d607dc544c559226db50d40193b435ce7528086eee21ec437e986c89dbe05931083768221e4bf06ede00000000000000000000000000000000140ef3af9f3dfe760e8c9dbe8d24abecfe611699ad337a97481a1553e9cabdb2e8a8cb48bc032bd02738cd26cd1388c300000000000000000000000000000000062e54c21986cff68cd57903594d0e9f2f8348191aea6abc19e8b895e6ca59bf2eb731d10e426ad98726c51adc2d53b4000000000000000000000000000000000594d2a92e0b979c95daf6f78216be8c33ef23f0bebcda479326a1d63ec8234b283ee29fff7fccd441ab4ea6e17371a40000000000000000000000000000000019179f35ebf4ad9f8f9dd577b2db1ed58a988954b4bf4232301b713809be318e746f5b2bd663a21de755125f414bae9700000000000000000000000000000000172d8ad43611623865bff86df2bea58a02b7d6a2c41b85b98d6a2bd4f5e1bef25c978ac0bbb7f4746297c6e0e40b4e23,,,invalid input parameters, G2 point is not in the expected subgroup -00000000000000000000000000000000054dce4bc0b703b8957539c594d8d443fec161c3cb2f806f8eaa8158a665d84cfd551c0b7c0a08bede0cbeb780a6ca5b000000000000000000000000000000000cb3d3f9bbda28f8fe597907a76a8250567f4e481b6e9409e03ead60eab77153cf8f25ffcebb243a310094740cc2e2a9000000000000000000000000000000000a71dc159647864abd64655bf5ef956f21ad55529bdb49ac910ef628cc62a3d43b2b9ee26180232fa29f4b0e8371286b000000000000000000000000000000000c72d0fbe0a7604c9fab394b285ebf1c322c95013651bd21f88865e269eafa65e135ff90f5b249a794cef4e6cfcb56270000000000000000000000000000000019ac0043071372ba077bc8d91a4ac80fb5b8c8131981c4dfc698ba9ae50b506f93149eb73e4bc4f4ded94d6824473817000000000000000000000000000000000113368be2a531d2958d887c046fc26155436fc6a1ef44fdf16447163b7bc48fbb499506d8d5c8041d21116c4f22e685000000000000000000000000000000000b7244995b7819857f716288dc59eee9ba5ac7bfe010937ea0b67ee71388a3792e5b7feb6890a436db4f1b26df18b38c0000000000000000000000000000000009a0b73360bc0ca3b632c0116f21ffdaecf37e4d6c904c98d6225a08d7caadf5024ad6b457cf31b924118ea147ff10fb000000000000000000000000000000000a71dc159647864abd64655bf5ef956f21ad55529bdb49ac910ef628cc62a3d43b2b9ee26180232fa29f4b0e8371286b000000000000000000000000000000000c72d0fbe0a7604c9fab394b285ebf1c322c95013651bd21f88865e269eafa65e135ff90f5b249a794cef4e6cfcb56270000000000000000000000000000000019ac0043071372ba077bc8d91a4ac80fb5b8c8131981c4dfc698ba9ae50b506f93149eb73e4bc4f4ded94d6824473817000000000000000000000000000000000113368be2a531d2958d887c046fc26155436fc6a1ef44fdf16447163b7bc48fbb499506d8d5c8041d21116c4f22e685,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000cc6bbb9914ae46b57eaaa8d3d22274a355bd7488e5b537169c995ef2bee187ab66497423f14fdcd01373a609981b3ea000000000000000000000000000000000037d9461da369d186cd812a9ade7690b2b8b54ae386b7342a69af832ff4f51e5db9baa3c6b4a65d798a1aeb41d8787d0000000000000000000000000000000013a6e129d4dd4aa93cff5489ee879763e2a2231939e609d2d72f07e630b37d09f3057a36fd5cdfc9c81675c996f8ba0f000000000000000000000000000000000e8d7ad082e8f9a718fc2ea712853ed9ab4e8b1a8ca9988f77c70fc759f1fe2d4bd73696e539f130be13b2862efbdf770000000000000000000000000000000009897223b041568c9ef2884baa28477241e525de05f2c2f15441854a0e8660786a0c7b85a6d9d1074fed2b44d75efedb0000000000000000000000000000000007b52401891bd8003af4b07b04b15b79bd05fcb54739491352d295b5545ddba34da0b0aff36a3e7e4b433011be580174000000000000000000000000000000000cc6bbb9914ae46b57eaaa8d3d22274a355bd7488e5b537169c995ef2bee187ab66497423f14fdcd01373a609981b3ea000000000000000000000000000000000037d9461da369d186cd812a9ade7690b2b8b54ae386b7342a69af832ff4f51e5db9baa3c6b4a65d798a1aeb41d8787d000000000000000000000000000000000cca0d111237ec521889baa4987714c6bb539399b058b6635fd043821377fd6cfdb74923610c8235afe2be99188cbe820000000000000000000000000000000007fa2b99221675b38204c2eea94b2378b1d711ea5ba4f41d35c37f77ee2466f22c88725da9fcdabb6153292b7cd9aa1e000000000000000000000000000000001069adc30f99e0ddfd39775cee5ddd786fcc077cbaa8737f7031745d02f06168fd5d3c4936704d15955bcfa08b0925180000000000000000000000000000000003b388a8d9baabf0bf708e2fe28eacd7f704bc588185adbcea8e0a2bb8f9bc9b045918d97bb27b2033c6722b6e6692de,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000001055ab14a2407bf095a954cf1c926f2c520dda187c44522a7e924e38543e5b87e7642227821a4e0b3ab0289b32161a060000000000000000000000000000000018aa24044066526fa9ed980ae7b3110a4fde7ba0a5fd289803fa5175d30766f01a266917f821169c7ec31fd46e1a14ac000000000000000000000000000000000b6e16f2a6cb821abc43c447da207cc3013f2f750c844f42f0fdf47160a38501bf502073bbeb565122bb3de61b3a5ab800000000000000000000000000000000040f5f3aab5d416e9a084fa298814f894ba599315fe10af20f836e624680582413b4a54623cda8ae2663ee094e4db775000000000000000000000000000000000d32ac715a094813c7b46ce2e932365bfd62ec5e584e047b0c56ed6eca3c58268ae01be31b833be7ba5c2588ebb9859d000000000000000000000000000000000850b9044f129e51658a02cfa49d40a2b09239823cba4d8fe423fa1b4815750811daf745e7e02b317a7318aad0734ddc000000000000000000000000000000000765a76c441227592ba30d6b1d3d9898467352398efc0e8416e0be8c9f87bcac8d5eaa5d7b2a8adfae8303909bef28da00000000000000000000000000000000107c0eff2fa09afb743c294408408451e3039da8db8c0beef32f07864223817075fa557a89244cdc293d631311773947000000000000000000000000000000000b6e16f2a6cb821abc43c447da207cc3013f2f750c844f42f0fdf47160a38501bf502073bbeb565122bb3de61b3a5ab800000000000000000000000000000000040f5f3aab5d416e9a084fa298814f894ba599315fe10af20f836e624680582413b4a54623cda8ae2663ee094e4db775000000000000000000000000000000000d32ac715a094813c7b46ce2e932365bfd62ec5e584e047b0c56ed6eca3c58268ae01be31b833be7ba5c2588ebb9859d000000000000000000000000000000000850b9044f129e51658a02cfa49d40a2b09239823cba4d8fe423fa1b4815750811daf745e7e02b317a7318aad0734ddc,,,invalid input parameters, G1 point is not in the expected subgroup -00000000000000000000000000000000182197c7a0cefeb530f51c664dcf8a74f9f70165ffc416ba454e9c356bade393e30d037347b1a020dcefb09ee65590a6000000000000000000000000000000001030be8d38736ac8e555d1681b14f73f2ca58faebeaff17b6006bf7876e733642d229075c8dfb0a9ba4e832e384aeb8b0000000000000000000000000000000019094370a6f19e946f587e9b117332ce5ad91860cc103015e94c6aac6d2c00f3e71471c241ea1d425e391707b27b851d0000000000000000000000000000000009ad1d1312011907676574a7867ac02059d9b0e29dab709f6ffc1b75b3598658427f10ab52d1129417ef42c30998f55f0000000000000000000000000000000003103495c759d8901898acd98679d92e048ca41244782045a6d9419b3ff87c351f97a333899fb445b8620099f7b9cce100000000000000000000000000000000051f7aaac39348f70109ae7a016026ea52c03e4ec90d03ce05aeea74f66bbf82e17be35cc45f492f50246f0de8dc68c500000000000000000000000000000000182197c7a0cefeb530f51c664dcf8a74f9f70165ffc416ba454e9c356bade393e30d037347b1a020dcefb09ee65590a6000000000000000000000000000000001030be8d38736ac8e555d1681b14f73f2ca58faebeaff17b6006bf7876e733642d229075c8dfb0a9ba4e832e384aeb8b0000000000000000000000000000000014229a1108fcd75131295caee98f8e4e075cf4bb5e169024e07a533f65316cb5d19193d3cfee8b2216663829be6d374600000000000000000000000000000000156cdf98f622a393d920b200e6d9efede7413137eceb79d66f85a18e33ef6946a515737c58e198f877fa39458877b99300000000000000000000000000000000006e5cee8e0f47c0ee4a574fcca6e150901a7de58f3f2eb3480f1ff8c14effa4bb9d00837501f22f6cc465e4026c9d7100000000000000000000000000000000124b6c0836bdd10657a3e1f978b48b9221b1cfc2767b6b99319fb69c5fdcc1b133f1c2fd093c62d6d1e398f32c4e8b71,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000019c9b755000f9f1b6ff22885f45bc1f5f65d080ecc129d29e1cd60aa14fd20646643be51d2fb3417cbbd39361bc72b62000000000000000000000000000000001741fd3c4a7e883094c0e84d851f45cc1b81af5bcace67dfddd3f19e8817697a386d1965a4e17c60b00ecbff84779b97000000000000000000000000000000000e87ea967f6c4dd7135efcd9a59368a2d19dd1385aefa34d7d9bd7f5094d779a7150667dcec463c9ab63d2ffc8ee4f6d000000000000000000000000000000000a3a010f176efe1a7bdb77dedf6b6271c845d662dca5062ebbac4e9c3b8946db0adfff37a6faa3196a99fb3ef05f09c5000000000000000000000000000000000350ad257d47f270c4340e3cb124ce961316573dea14c9584d20221d922a43c2e94324ec14bd1e4a1eb955861783a8f100000000000000000000000000000000070edff58ac1f8c13f62327cf0adbd748285fcd84ed7be23dfc82a0ae32f8c8f5f6b0679f795874cb0082718fb07a1ca000000000000000000000000000000000d5be6f99bb9a2379d1e542ece048164fa5d14e0c6c459180717b3da46e8446e9def576635ac1124e1390196fe97f39e000000000000000000000000000000001482d8339b402e3bffe61aaa298c8bae4286f1fbfc877a66e21cfe239bbee383d701d95a6c2b8193d67df5a551bb7aba000000000000000000000000000000000e87ea967f6c4dd7135efcd9a59368a2d19dd1385aefa34d7d9bd7f5094d779a7150667dcec463c9ab63d2ffc8ee4f6d000000000000000000000000000000000a3a010f176efe1a7bdb77dedf6b6271c845d662dca5062ebbac4e9c3b8946db0adfff37a6faa3196a99fb3ef05f09c5000000000000000000000000000000000350ad257d47f270c4340e3cb124ce961316573dea14c9584d20221d922a43c2e94324ec14bd1e4a1eb955861783a8f100000000000000000000000000000000070edff58ac1f8c13f62327cf0adbd748285fcd84ed7be23dfc82a0ae32f8c8f5f6b0679f795874cb0082718fb07a1ca,,,invalid input parameters, G1 point is not in the expected subgroup -00000000000000000000000000000000104c749e3f7b40bf6df55f9414bd146ac306b46a6210ae4ceff6fe2a58220ddbc69208ada5f692120dcfce39b1e43fb5000000000000000000000000000000000663a0e62ea68ac23a6e27958baabbb5deca3905aa138a54d6198724e5fdf0abb9288cdb52cf1d44e93f06571a654f75000000000000000000000000000000001116ecf077865395ea40fa9cf05753b87ac29ccf9ecfebfa1031fef0defa1d77634c2177647f069532e00f7fb657577f0000000000000000000000000000000005c7960dd84874fc00ab199d00e8bf1ea035a7eec443328bf2bc28d0006979f5032763a4d33f031e698895e03b27314f0000000000000000000000000000000004e00e32a506bff708c51fcc4101c8ebe7f1695d6a4606b6648b04710fdae313b99219963921451d0fc78dd59970ea8b0000000000000000000000000000000019dc4b721ec4a4303809c47da68099fc10706eb08cd4f6f91641ac680661e93a91e2067a84c12f9f55f84e27ed76ae2700000000000000000000000000000000104c749e3f7b40bf6df55f9414bd146ac306b46a6210ae4ceff6fe2a58220ddbc69208ada5f692120dcfce39b1e43fb5000000000000000000000000000000000663a0e62ea68ac23a6e27958baabbb5deca3905aa138a54d6198724e5fdf0abb9288cdb52cf1d44e93f06571a654f75000000000000000000000000000000000da3982205a45000b16e1ec7a48effad4ae1affd4acd8bd13fcdf2bf05b6845ebda9be2df6d6325389d711111641aae500000000000000000000000000000000150c1bb67fe3d88dbfb452d5b4582d9a1c350ac01cc209740be70d63e266c926cc6b0171eaea913b7456daf595b83ce900000000000000000000000000000000138d0bbb52fb6248731c8fbb6818d1379fc5c2549a5a0d663a56c41b3b2e8c7c4fd77830c455a40e59aaa65124ebcee50000000000000000000000000000000015e6b4628b75f9786ee26e41cb8b86c6e6a97ac18aa7662b39e9c96e169a3192b64b863d7f9739237255fea6cab12fcb,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000001638395680014bc04e2ca42bf864dde47a0d708ae81ba4a6aa2e2476837750aaf5f9f6e41a5a23df432ae92fd221737e0000000000000000000000000000000009419792539e0ae995b8d853d9ef513bc54766475e37bb3dc2dae3d7fb9b02b0eb2327f24a751d2de344b9f5131ef23700000000000000000000000000000000197ff997d6c5efa3d7de8e16f26082bf13a2401d6df5f5c33c6614c36105f347e40216c907bdad9c1df6ebbd44f41c3f000000000000000000000000000000000f27a0bf92329730d776a83583177993b2b354a212a9c004f9f8892a750c477b8d1e68c13127f03b1629bc8392d06f5b0000000000000000000000000000000011b239cc6914a321385d907527b85713a0d842f5be80752f4c5758586dc1de944b6e4578bbe324f16838115e9c866bca0000000000000000000000000000000000cf93c5b48cd9de51ccaa45124217cabf466d07d6fdf4a7bb810443339ec4af5b74931bd07eb9fd31c284c05f3f539e0000000000000000000000000000000010b91e082484fff0da28b06f06e02c699d741f2ef788250e3fbf2ba8fc1d7d78a1ca63b76dadfb71015fbefc0eb70eef000000000000000000000000000000000c2fe842c659c875af0f2cb1a978ac9058981cc6c76ff057f326162d4322805974505e6a35499bd0c58b5d6db3aa222900000000000000000000000000000000197ff997d6c5efa3d7de8e16f26082bf13a2401d6df5f5c33c6614c36105f347e40216c907bdad9c1df6ebbd44f41c3f000000000000000000000000000000000f27a0bf92329730d776a83583177993b2b354a212a9c004f9f8892a750c477b8d1e68c13127f03b1629bc8392d06f5b0000000000000000000000000000000011b239cc6914a321385d907527b85713a0d842f5be80752f4c5758586dc1de944b6e4578bbe324f16838115e9c866bca0000000000000000000000000000000000cf93c5b48cd9de51ccaa45124217cabf466d07d6fdf4a7bb810443339ec4af5b74931bd07eb9fd31c284c05f3f539e,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000ac27e4d19924f4bfe30432554f25d456cdb4724c106409e46612e1c91e8cf5fc2cdcd6b6fd6bfe040e910795441befd0000000000000000000000000000000007e9227d849e467fbf5fadcc016dedcc04f4c66f23464195782746fde628a107d77ca5b5c9bcc8bbb14fc14208fa5de300000000000000000000000000000000094860f23d182a14d1a64d9693ce9309ef4e775f24aa3807571c9b8281fc0d6157cdb5a00b34b66be1849994c264c4b000000000000000000000000000000000062b4a3ef95b2522c894c0b492673c3800fdf8645998a899e27dc3a23c0530d96b558d1c6364477943726740cdbc88f0000000000000000000000000000000000daa2f2f2c1020339666be4b1c1e12f8d44625a9508bc5590314789d02fe0e2e676d8d240bff89b669b9290fe1d0f8a8000000000000000000000000000000000f7a710af0b04d20b7d515f2627b572a5a17a13975ee81bcb8fd90600d5fb2f161a9ab3635bd16649c95385bcd604f5f000000000000000000000000000000000ac27e4d19924f4bfe30432554f25d456cdb4724c106409e46612e1c91e8cf5fc2cdcd6b6fd6bfe040e910795441befd0000000000000000000000000000000007e9227d849e467fbf5fadcc016dedcc04f4c66f23464195782746fde628a107d77ca5b5c9bcc8bbb14fc14208fa5de300000000000000000000000000000000055d8c63d7c04bf5db81465f2fc372b798d77ab0ecf795bf57debeafbbc8998f91f71b0dbcc440e70df3d5a1cb682ad8000000000000000000000000000000001497d9519e835c0644d30ae38ee66faf39b1939320c2e0a45b7862508ea3bd7eaa3a754a679bff81af26c6aa141adae00000000000000000000000000000000001be6ce3109582f31e02051ef0e4d266f310048e04a7ac8dc5e04d2b7f2766440f1ae63e5da6dbf831b21fd7cb9cc0a80000000000000000000000000000000003d4acbd20192ee2fc55acd5c90cf5b897cb42a4c0a777970d11955cdf11d5ab22444ac9cfb666c3e509ce832cef219f,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000015866ee89fe4f68e45155fb98124e8453e1ca25347d84f70ebfc32cf76c5d48e3a3e5ccfb1b505db7b493cfcc73ef92d0000000000000000000000000000000013deaec2d2482c457050256d157968ea3d15f9b61b4573353e83daf824b28289343bcbc3bf97ecec9d65ad08804861440000000000000000000000000000000013467fcb424ae0eb012228fd2083d92e6d242427670ca6e2cc1166166edee5a94b78d2c2f8715a996bf2b4e5112e49f0000000000000000000000000000000000c23c01e0061b0fc7579723e072b12e86c8f12f4c2a039bdc5b1f3384441ccefec187e0380efae31a819d92fd6462ce80000000000000000000000000000000014f9a055a5e468955f6d7485fdffed2b33174777f99d9d0af160b0a083912b05da45f35c73053120f61525c173a24e59000000000000000000000000000000000cfdcb6adf8f04fac2cba8f322339fb0614f46b77b0d91f0ec167eca06fcce080ee0e63023fb94712dbe7591843b6fe1000000000000000000000000000000000d90bd38049f2a8de869d8a748c9ff3120542f38fca6e8d5fbbff86baaabf0f19dbf449cf23c043dfea322d99837f7110000000000000000000000000000000000ede89c8bb8299726ec685765f10167c5b844e427d3c15da6ec2c1d97de174819d52caa96d5cc938e93dd09bbd1e0d80000000000000000000000000000000013467fcb424ae0eb012228fd2083d92e6d242427670ca6e2cc1166166edee5a94b78d2c2f8715a996bf2b4e5112e49f0000000000000000000000000000000000c23c01e0061b0fc7579723e072b12e86c8f12f4c2a039bdc5b1f3384441ccefec187e0380efae31a819d92fd6462ce80000000000000000000000000000000014f9a055a5e468955f6d7485fdffed2b33174777f99d9d0af160b0a083912b05da45f35c73053120f61525c173a24e59000000000000000000000000000000000cfdcb6adf8f04fac2cba8f322339fb0614f46b77b0d91f0ec167eca06fcce080ee0e63023fb94712dbe7591843b6fe1,,,invalid input parameters, G1 point is not in the expected subgroup -00000000000000000000000000000000119c7c85e5efaf08b91dc496758b962098cc0eb60f4a770bfafa91809ae4a95b43f96b69c8ddc897701487f22d2e049c0000000000000000000000000000000007467ac896ae9f7d2cfdfbab082c89d3c17a6dfdf1f69b4b38fe6d5ede6848a45e8b0d728eb8c68752ec59c8e0504dcd000000000000000000000000000000001047ce33c70d58e3191a558ce2fd95c20bb62abae7d924cec8a4067fb33e8dacd796d65c049be7bacdb969f61db5b26500000000000000000000000000000000096e7081a7b2377331f86d8418bd577cd5cc1d45e60d39b519ff2b3a50ddb2d5f6dccc0066167f42498a3d29ef5ce2e30000000000000000000000000000000011159939a04c129b007f2aa2d59ae006e8d89c41dd465cba551737d06d3fb2c1161aee98e86cb8c0321f42e514316030000000000000000000000000000000000c25d9cdc8dbeec82c47d5ef12f21a7e58a8eddc1e738e635ba04f2ebe12440090f432c0d1518217a5531266441f1c2500000000000000000000000000000000119c7c85e5efaf08b91dc496758b962098cc0eb60f4a770bfafa91809ae4a95b43f96b69c8ddc897701487f22d2e049c0000000000000000000000000000000007467ac896ae9f7d2cfdfbab082c89d3c17a6dfdf1f69b4b38fe6d5ede6848a45e8b0d728eb8c68752ec59c8e0504dcd0000000000000000000000000000000013a11383f2d3a3c28e3ea750fece5790e37f66b306ecca417c83840bed70c034e4b82b0850f719fb0b3b203a25dffae40000000000000000000000000000000017d067d9cfbbcf605c5da3532b2eda5900d71340508f08c05d0051772e65b0f85b9efe5b6d63a7b64b25ede8df7f25c9000000000000000000000000000000000e44847884ee8eacd5417e042e8299af8313ce177ecdd034a91d3bdd441437510808d44e328e810c46bd851ceb6085dc0000000000000000000000000000000013288506fd52bf37aaa975b533f1182a824b79d2d876ad6ff705efeec7f732bed99d2da8f31c00a2db4d97c4118bcb88,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000b7aa89ed719e2af5ad32ca923f1d2d52d767f6bd33d8967d2619b54472c8881ad06441b2595931d734a0fd10ccd7f190000000000000000000000000000000014bd6118d65e19e4cb79af164f523f1c80b0f0a0f0063cf1d28e11ae7987381c0b9707e43754b75f36ca8523bc5f7da600000000000000000000000000000000056a29b523b0cf85ab04b0a496e078dba5529cb9699e567ca42f9ee3e3f07b61ae29b0ce17cad23131375f624a366157000000000000000000000000000000000acb91d1f057c7aec1f7561614a95f8db2252cc879bbc2595a5f607d8b0ecd6e6e3ec19849eacfca62d870b049ce84910000000000000000000000000000000010d9459e07178af8e125c2f66de699cfafb5f87a63454e24d0ed88b6c804a9ff204f146ecf4d6db62234ace0a944acb20000000000000000000000000000000007256a68e23b43a3b6475b3cf209ec108bac13631ca448cc860672c65c1760a8299fe941ed5bcbbbcf63a683e86806ae0000000000000000000000000000000005d4453da747eaef90007eb8ebf6088e8617dad362f2a95638fca7312bc5cdd8200f32b17a0b483052e6784d286c2cb80000000000000000000000000000000012f0e56ed3e3f628a13493d0ade2321310cf62927b40887202042981fc9a81d6cc69be130346b7bc244a2119b2632a5600000000000000000000000000000000056a29b523b0cf85ab04b0a496e078dba5529cb9699e567ca42f9ee3e3f07b61ae29b0ce17cad23131375f624a366157000000000000000000000000000000000acb91d1f057c7aec1f7561614a95f8db2252cc879bbc2595a5f607d8b0ecd6e6e3ec19849eacfca62d870b049ce84910000000000000000000000000000000010d9459e07178af8e125c2f66de699cfafb5f87a63454e24d0ed88b6c804a9ff204f146ecf4d6db62234ace0a944acb20000000000000000000000000000000007256a68e23b43a3b6475b3cf209ec108bac13631ca448cc860672c65c1760a8299fe941ed5bcbbbcf63a683e86806ae,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000015827c619b2a73a750f6469160ff323c15adaf55e893933a5c2e5c2f0df8bc426421408773a3e8cb8b1695973f7c0b760000000000000000000000000000000000af4a7d29f10cd080d9989b341fc030a5dd51512f776fb1da7a46d542c2a6a2ad7c1309af30423b717825fd5dc0356300000000000000000000000000000000198d09947dc088c1d33d776d64765766b508764f12a28fe0119277d6e171af7c9ff83f6823558e8b1a4284857663afb700000000000000000000000000000000130d5e5315f8df8d0142d06bad7a51b08e5b3c2d49b84c9d6b177b9bb628a852ff65c1a93982dcb1b31a2dc0941904750000000000000000000000000000000018cb011868591c6b44b7ce49f82470aa6461a737173e1d88d249c0e83fc6e4e6a15f8397e515efe7dc7302ccc2e369ae0000000000000000000000000000000004de1c5539b2ef536a66c8f3d7cd49ed948c081c08cba8826d2ccdf9d159b931ea10eeb8b3f465dce0143b179059169f0000000000000000000000000000000015827c619b2a73a750f6469160ff323c15adaf55e893933a5c2e5c2f0df8bc426421408773a3e8cb8b1695973f7c0b760000000000000000000000000000000000af4a7d29f10cd080d9989b341fc030a5dd51512f776fb1da7a46d542c2a6a2ad7c1309af30423b717825fd5dc035630000000000000000000000000000000004286a9efe902158cc624080ebc5fd9b5e0e6e31554c745d5f0c34ef1de2a487f77d405577559dac59babc731ca779110000000000000000000000000000000009c09c9c9e2c75bc6a81357c03b339668c7d8cc8a3f65790ad53b62f4c21acbf64fa66fdd75dc24c05214b712ad7fdb60000000000000000000000000000000018bf7e4fe271fe195377639c5743c1ef3eccb09c86d64d2a4dad2d7d4ff0feb46252d749f82a27141dc0007649b032bb0000000000000000000000000000000018113c4584b81eb814a9f1ebd041062d0db8bec46c2c1ffb7f863bdd2fc3fac470b01c32b6f2453ab048eefe362aa1b8,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000c3f4ece90cf7d380efd3f81e66110a5923bd604422fca0fac2a16fb9a8d8b34cc1fb86a15009e8cc2c0d9fd8fbc0fac0000000000000000000000000000000012ea55d042ae590abd4c2687e0f152384d37665ddf26787d49bc9f6d40a579bcb23521c59ce91c418b9f4801375892aa00000000000000000000000000000000098af17ffd4d28bad76ce1ee669e7cdac1eec9facc260440636be88618302ab5a0826141b4fc914a389816d04597826a0000000000000000000000000000000011bef78afedf5c62daee5e86386c45826a524352fea40f68b07b7794df8eced4eaf0fb55b6990b4fb417ecc597b61e48000000000000000000000000000000000d64f0a4df4f858defde17b31476045c3dea78de4ec8082822c1699c0b9619464c75f0e57ebd12ad9e4e2e6b291b538c00000000000000000000000000000000031f12dc8a9c5445d575f99e2a4b4217ba5c0be58ac00977236440ab0ac7e2c8dab72a64464e4480aab7eaf1d629c7e700000000000000000000000000000000033f3c31337bc48622d27a9a3224a2acdb5c538a59b497a4a85840c81cff667ed0a0e4e3f4bb23a9ae53c1e79ea54cbb000000000000000000000000000000000cf0dc22af4530260cde26aa0eedc83a0ec3ae87d024e6907f3d22070e1054b3d4f24d5ace7218ed44763af6ec3f25ee00000000000000000000000000000000098af17ffd4d28bad76ce1ee669e7cdac1eec9facc260440636be88618302ab5a0826141b4fc914a389816d04597826a0000000000000000000000000000000011bef78afedf5c62daee5e86386c45826a524352fea40f68b07b7794df8eced4eaf0fb55b6990b4fb417ecc597b61e48000000000000000000000000000000000d64f0a4df4f858defde17b31476045c3dea78de4ec8082822c1699c0b9619464c75f0e57ebd12ad9e4e2e6b291b538c00000000000000000000000000000000031f12dc8a9c5445d575f99e2a4b4217ba5c0be58ac00977236440ab0ac7e2c8dab72a64464e4480aab7eaf1d629c7e7,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000001679e0889aac1501b67c4ccee84942e05b1720f48b6390ab82ff76c0ab95defb79b4371770f2e07a9e7ee8de4d76b43500000000000000000000000000000000162fa6099ca3e5e8e27dea6ea0d4d13c5c150d281fd6beb2079ddf2d714bf9458184100c88440109d7526812ee0f56e000000000000000000000000000000000087bda5b07cf72c2b350e663670f094c352097330b307cbe2f7b4224841b6eb23c36ba62d4ee591e5ca68383ec0256f6000000000000000000000000000000001163d4985e0f25d36a1f8dd97b61413b0015a966a88d98eddb2ea2d5eabdd83a44fb7e37cee90cc50df2f95dbfa97979000000000000000000000000000000001652067ee82320191cc5b188e61ee2d1b94c781e8e5798c89224920ed1d12a2cb41066f69cdeffe8a4d5e3aa1be4c83300000000000000000000000000000000139cd806423ee99d913e8b0e5ddfb6b1b62478254fe39d6836fbc632de9435e1464a556b1f9466efebe93636dfde7749000000000000000000000000000000001679e0889aac1501b67c4ccee84942e05b1720f48b6390ab82ff76c0ab95defb79b4371770f2e07a9e7ee8de4d76b43500000000000000000000000000000000162fa6099ca3e5e8e27dea6ea0d4d13c5c150d281fd6beb2079ddf2d714bf9458184100c88440109d7526812ee0f56e00000000000000000000000000000000017028dd744482e290c523ae5944c8a149afd9d344fea7ac0171ee3a5ff0c2add53ab20c477a584bf61e007af5840eb4a000000000000000000000000000000000863382ee8a43f02396030768905e44c8f9504b7315b00e379b92060e4f01e1b4e0f837b24cb42354e7211419a5516480000000000000000000000000000000007e2af64687f7d581d5a2bbdf225d1ab3dbea326ec89c08852807696c8d13cc907ef4289bf5ef9826c1fb27673b28bfb000000000000000000000000000000000ffc910160c8a0b826600fcdbec027e7d4874c9774324bddd2dd4428eb81c22618a49378502917ad9fcd96bdb1371285,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000001902b8c58eae3ca8d2261a637902587c2c0e75d32abc894967b6837ea34252e4558966f931789ccd76c1bbe3e092b180000000000000000000000000000000000dd20f71f5054c79d5e357f69f8d7345b5a036241774a72743271f2dc8f6e8c29a3babc2b65ed8193cc0636fb2e86f740000000000000000000000000000000003e06e2dcfbd695e9bda0baee1276ceab637fd1fbe2d2d6458c923c35b00edc7edf4f9e797aea59ff8cfceada0615a02000000000000000000000000000000000a04a2ed5e42fac7f064b43d64151a6c517ecf22dbc7563a3e9f35f555a9992fe45cf6a728ba94607df7c96f7e0a334b00000000000000000000000000000000090fac97f9f524168bc930d26ea1627ceaf187398d6bfc5a019c8467d75cd31a41c7eb9fda35fc85bd92b4cfca92dbff000000000000000000000000000000000f37b91dc935c28668c27d38328a511148c1739b65f2816dc53e42a8f059c9b2be7417a6f97c9a2597b1a0f06b7afc65000000000000000000000000000000001687dbd36c7f96f8be47f08bb75bc72f91e63e26d0157a9a9c8f531f3e73bfbd9870fe9abd0a7a3fe73b997e48d0ffb8000000000000000000000000000000000183ba882bdaf1dc850cb4e98158895effda1734fa64810cb15640e6cc027bd006e5c1a088cc2c65e8af29b64fe41d4c0000000000000000000000000000000003e06e2dcfbd695e9bda0baee1276ceab637fd1fbe2d2d6458c923c35b00edc7edf4f9e797aea59ff8cfceada0615a02000000000000000000000000000000000a04a2ed5e42fac7f064b43d64151a6c517ecf22dbc7563a3e9f35f555a9992fe45cf6a728ba94607df7c96f7e0a334b00000000000000000000000000000000090fac97f9f524168bc930d26ea1627ceaf187398d6bfc5a019c8467d75cd31a41c7eb9fda35fc85bd92b4cfca92dbff000000000000000000000000000000000f37b91dc935c28668c27d38328a511148c1739b65f2816dc53e42a8f059c9b2be7417a6f97c9a2597b1a0f06b7afc65,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000010f38e6e4f562be50152c1d10eee8f8990cb8f884035bdce111e178d1286afe2f2f02c3a36858ae2ce902d6a2872ff1000000000000000000000000000000000141dc64999baf42240b933f30ee895188b561b880f90b5f1ca8df0ac75be7d95bc15d55e321720c172171e9c4c59e800000000000000000000000000000000000548814c4b6d72cfb817b49b3141302be7d7b378e50ff9f7d66e31cd04e1f024bba334110817990264d26cbcff7170510000000000000000000000000000000011f9d186fab00b9ede155a82ec5a5e587a1c6091005c4c6e90672d15c434953426440799c5ede15a7976f18bf345595a0000000000000000000000000000000018d480ece4609a56220d4db100b68ca06ee4271b84e1a81112fbb0616cb34d2b0ec974de31f7d6957b186dbd8a8f8ad3000000000000000000000000000000000c3c1b79130f73d516c1bbe38c572be2616991b523a9370c98df9313be9f5015c3e8d51947201c6b27e8cb9c7291bd660000000000000000000000000000000010f38e6e4f562be50152c1d10eee8f8990cb8f884035bdce111e178d1286afe2f2f02c3a36858ae2ce902d6a2872ff1000000000000000000000000000000000141dc64999baf42240b933f30ee895188b561b880f90b5f1ca8df0ac75be7d95bc15d55e321720c172171e9c4c59e8000000000000000000000000000000000006d89d908b733aba090432e795c564d1badd5b8529fc53507c4850e3d97978062b38790ef45562f3d4978491b5ae893b0000000000000000000000000000000003f7fc037328c13d13fdf4b2c251ce10c41ac5d042122f0e4e4f5a71cc9e1463f62d96aed44123d0e612e5296b53fdb80000000000000000000000000000000000aa2e027a929f7637f437b333a795a2e8d1a92cda31feb5a72fa1c66fadd23813177f9360204b0512d8f460b5bb161d00000000000000000000000000000000139a2a989d462e1793caba250c2ba9c46f31b3a06f43a0f4cbaa021b5d52d254f18d9517ddf3c21780f2a2c59533c5db,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000003ac8ec0fbf8c4a6774d8567a45b033a4a622d88d8b2025eecd746d084617b67342cb1030068ef6dceea78cf97210b6a00000000000000000000000000000000090b3a144dd409afa163ef513af313e545330a66c33d45b32d61cbdeccc66f78062060a2bfab2a88ec0cc47ec3525f19000000000000000000000000000000000d542ceffc583a6022306479b2365171c3610b7f615619802caf2f81d78f2b5166114485dfaacfdfc27c6450f8c344550000000000000000000000000000000010f5a12712658a5359c0a310f6d833c0b4623c51da6c035dfddcc4c201ccb27ac0a534da459a82488c32e1d4ced9b8af000000000000000000000000000000001878dfc18d1744c6f837b36436b82cd9c270916e5206f709e7eb30fcbd4157f65639103f367f1af2684a51d93e3dc7fb000000000000000000000000000000000ca3a300efdfd9812b6213a848d7a2f865d3fbe8c73527997f18460485626921063bd5b7842b8a47ccadcebb5539a54b0000000000000000000000000000000009aafc73979c000236c08e089828880f54645b5ff4c1dcfea0ff41ffe8e3fce8ba0dbcebf0d4205bb6616a737b6d3542000000000000000000000000000000001399a2072604d50f92ee186924ce32c4e887803dc258b7495aa2f3d2187571045db7f360d2614b198f83bc8024b06559000000000000000000000000000000000d542ceffc583a6022306479b2365171c3610b7f615619802caf2f81d78f2b5166114485dfaacfdfc27c6450f8c344550000000000000000000000000000000010f5a12712658a5359c0a310f6d833c0b4623c51da6c035dfddcc4c201ccb27ac0a534da459a82488c32e1d4ced9b8af000000000000000000000000000000001878dfc18d1744c6f837b36436b82cd9c270916e5206f709e7eb30fcbd4157f65639103f367f1af2684a51d93e3dc7fb000000000000000000000000000000000ca3a300efdfd9812b6213a848d7a2f865d3fbe8c73527997f18460485626921063bd5b7842b8a47ccadcebb5539a54b,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000013a366c2748305c4ca702c053ddcf15df4a4a7858cda813d001f59bdbb419de6ae3fd24b22fbeebe58d5278caf04c0c800000000000000000000000000000000140759404192c97274c06a69609a1f927195dc0e9df312f483b075e0647a9df1225c22284edece061a2a1c3dd6c4af030000000000000000000000000000000018059cd50cc71b1060ee01c10860bccaf2abbf84cc09266f2818b7625be9368138784dfacf0a1413f19bed9c09294fed00000000000000000000000000000000138939b9b91fcc8ee3aeb35de9476576cc84adbfc513a72fb74c6b897a9d6bb2037d65489709de062b238c5d0587345f000000000000000000000000000000000a9f2a8303b70df25b27158d7fbe06db9b71f6b30b8d8f3d3ad3e81ed310af6ba00eaa104c4c8755c3c24b37b5a9bae90000000000000000000000000000000014297a57a543d963d777ce5e3e5b07d19d69f56ff3efafa2753889522f10dac3fcabcc77466ef236d331361955b571670000000000000000000000000000000013a366c2748305c4ca702c053ddcf15df4a4a7858cda813d001f59bdbb419de6ae3fd24b22fbeebe58d5278caf04c0c800000000000000000000000000000000140759404192c97274c06a69609a1f927195dc0e9df312f483b075e0647a9df1225c22284edece061a2a1c3dd6c4af030000000000000000000000000000000009a457949f0a3a5ef91fbe3beb52dcf95a9f71db70bef860d2fd60cf9330b99e1d103eea022f32f0db603a635925f2940000000000000000000000000000000018e2ce9366745f5691d3c8f907bffed5f9da928cf9c9997db1311bc47b34d9d0a076ea5b7845e0dbf1c3dab60edca5de00000000000000000000000000000000089bcfe3a5596fe5f3c61326de93eb63abb0f56a7b9a5c5f4ebd883ea681607352b955deb581b57da99e4fd302e136c70000000000000000000000000000000007cb502742faf77a7223dc713a243af8998652e45f51b32dabe766c7a771bf4642ea9f25fd924e61a0f0a6e0f27c99dd,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000003f23275ed56b4aa4a1fe367219e8c84142d60d6b9983e0abb8ca21a88e008286a902b2b92369ec14d7f45f7b66b9a0300000000000000000000000000000000130b8d95a4672e467f122fc010ac3ef7f6b6d0ecd044413e51f7c27ed22f7ab7a28f60245b9ba83d4ffc98b9a990510e000000000000000000000000000000000e5af1420546c1a5a0e0c2bd9241bb7c7a26dd52f4f358fc868bea457a60bd4f6bc5b60b27069fb4f6760813a91ada740000000000000000000000000000000017426a65d239b1d9505bef2b476799c394fcc7bfdca36a1ee5a600351334dadc238b64cf8a667a25d4880a31b73c53a9000000000000000000000000000000000f151587944aad17429b51b1c16193c1e1c93cb412538d1475473666c997e012ce618eb841c4e9e064a08ab83d7fa60e0000000000000000000000000000000015c2e049c532db585807319c23ec077a51f288fcffb2cb6528d3697221e8542e3fc85d18b079ea1b217fae30858a36f20000000000000000000000000000000010a1fe14b9981a917e49b71f549b7b548629ad0003b43a9eff26e2cfa7fd8ddb21056e26dc78c88d30c32e62af40a83d0000000000000000000000000000000019f408194aa79434edd5f2a3adcc5c55ee9c1f616641b29ef21fbba8cae342df67ef438095dd7677ea1959f9a855974d000000000000000000000000000000000e5af1420546c1a5a0e0c2bd9241bb7c7a26dd52f4f358fc868bea457a60bd4f6bc5b60b27069fb4f6760813a91ada740000000000000000000000000000000017426a65d239b1d9505bef2b476799c394fcc7bfdca36a1ee5a600351334dadc238b64cf8a667a25d4880a31b73c53a9000000000000000000000000000000000f151587944aad17429b51b1c16193c1e1c93cb412538d1475473666c997e012ce618eb841c4e9e064a08ab83d7fa60e0000000000000000000000000000000015c2e049c532db585807319c23ec077a51f288fcffb2cb6528d3697221e8542e3fc85d18b079ea1b217fae30858a36f2,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000bc43aa42d656bdc233b332698247bad1904aff059eaa3f9b943ce5d4ae4f414dd361062a243f38129b954f17389ec280000000000000000000000000000000018dc8ec1d798981f662a8ce10f25f31197a2d168d3c047d2f6a214f1554202d072baf004c61b6d58f4f0410a4520b985000000000000000000000000000000001217fe0908fca8686b63337b0de6d3b3e4853466a990d8feb8a127cec95fd8dfc97be2ac57587d5f9ae1f5c10848e5910000000000000000000000000000000005c60861ac4863f7b9c38952daa88c2414ec8ac14f99fc765042b718da08136537765dcbc28cc6a0c279d491cf95b4b500000000000000000000000000000000154b289077530a86091d21c8be9c25ccd250da8d77caf853955b0d169e1ac40b5e0fd539b09b61b293035ebcbd0e21f5000000000000000000000000000000000356ddbe9454937c441dcfc98fe7b0cf8a746464f77230229328cafe6ad9ad1b5cc7a60e50bd8431b0996e3c42882777000000000000000000000000000000000bc43aa42d656bdc233b332698247bad1904aff059eaa3f9b943ce5d4ae4f414dd361062a243f38129b954f17389ec280000000000000000000000000000000018dc8ec1d798981f662a8ce10f25f31197a2d168d3c047d2f6a214f1554202d072baf004c61b6d58f4f0410a4520b9850000000000000000000000000000000001874e45ffd1349b4ed2e361dd7093a2ba41281b2d78f123bf9f6f73892962a0bcd6dc6e4159e505509cf7839aa79a20000000000000000000000000000000000ae0404355b78d20c1c3f5d65373d905696b166e76de62feb33f819dba26d39ef78621f819e998f6f2c82c65ddc22fc90000000000000000000000000000000008a499023de01bbe12958e10a3ca967f0f6047c705345beb8fb835c26df4eee908448b39191321f3eacfbd0951861c40000000000000000000000000000000000a56e3272f0474f980511540610b29e9a722a868025ac424ce8f76f342721a92d2544a420d3472f13186a0837d7e2c43,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000003e157886f141c2ce7d9ff32af44df6b7407af027005aac1149ebbe74b3b810f834b019b3e67a04531e2554f122d959600000000000000000000000000000000159eef0ff7bbe471a7ef8e666ffe35f427e3ef5bf9eeb4693dd4127467cf2615fa6b289be07452bec5c35b6d8d8ef2a100000000000000000000000000000000028316eaa131ef5303b012bfdd145bcb3106b362f410ce05810b8c83e10b1a8f80167b546b8b86c1368d7099fb5a0deb000000000000000000000000000000000bb3a353a2c16bd73c62fefd820927898dfced930d9639c5f63e62d8e8d31fa028cefb0d57ed16299eccdf3700b62bf200000000000000000000000000000000198272cf5c6e8a4f4cf4692fb7363687d7ba52deae88a7b976863309feb4a475db150073593567352ab62a150d862ca20000000000000000000000000000000019af00f2cf92494f532052962b62c34d0999a984b4bf36abd74a485fb9089ee0967071886b97f541ae80c6f7b8bc73070000000000000000000000000000000014bcf3f26683234584d79b436cc608462f1e2c20b5ecc5019988d8e30137859a4b6d0e1135dd5bbea0781b8ed3f0653700000000000000000000000000000000090ef29bf63ca97ae8388588227e1d1a0653c43b16a35a63f2ab4f0b11fd8005d9a85d30a7406491d983f347e4dfb9f100000000000000000000000000000000028316eaa131ef5303b012bfdd145bcb3106b362f410ce05810b8c83e10b1a8f80167b546b8b86c1368d7099fb5a0deb000000000000000000000000000000000bb3a353a2c16bd73c62fefd820927898dfced930d9639c5f63e62d8e8d31fa028cefb0d57ed16299eccdf3700b62bf200000000000000000000000000000000198272cf5c6e8a4f4cf4692fb7363687d7ba52deae88a7b976863309feb4a475db150073593567352ab62a150d862ca20000000000000000000000000000000019af00f2cf92494f532052962b62c34d0999a984b4bf36abd74a485fb9089ee0967071886b97f541ae80c6f7b8bc7307,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000003b6f466571daced9c0d6dd76b5f7cc91f20d92c0fc2f051a97524aee838be57eb977af49bf020a252db1b49693892ee00000000000000000000000000000000002b99dffcb6c171f66632d0cbc9aac74e6f4823fa4690e273a5c16baef618b80d2daf81d8c6b4c5240e1c329ba91b41000000000000000000000000000000000a32e330b87bb0c2984ce443412953a879f396221cd21c2f7ae46699b02c76352d3b13759d70541fc67cdc0e65fa6d4f0000000000000000000000000000000006a134cfd54f8e524544b170a4ae0b3da02da61b56633ace68b05c511a425a0a17d3e3e155a592e6176f707100174d1f00000000000000000000000000000000132f34e6b61e7fc7764b3113a4761cde446de56d3bfadc7f285bcf11132ce8d52c656cd9cddf176755dc228277557dbc0000000000000000000000000000000019d74adf4504a87de20b5a53d4e668be279d5850dc13b1699769d2279a23903f6f789dd897c2180ed895351e4f90d7e50000000000000000000000000000000003b6f466571daced9c0d6dd76b5f7cc91f20d92c0fc2f051a97524aee838be57eb977af49bf020a252db1b49693892ee00000000000000000000000000000000002b99dffcb6c171f66632d0cbc9aac74e6f4823fa4690e273a5c16baef618b80d2daf81d8c6b4c5240e1c329ba91b4100000000000000000000000000000000025c97744f862c85507620fef6d4b90a1e37ab2d6c5ed2d794880b43bdf854ea77e87e90b5a487c56fe29e28bf7ce01100000000000000000000000000000000120515b8665151db933e51722fdac7a83d2f299623a38529508b25218f0d57aeb0c6f260e0ef3741ea1f89bc653e5d700000000000000000000000000000000019d1111f074ac541a381472a4d9dc6b76cf64e86d92018460e977460b46e17924dfa522a5bfaccbfd8bd0711950f41f6000000000000000000000000000000000433ad85586f9392cc6079c1f4f37eed99fc65da9a32206912465116f879efcf9e83d8b325433ee31235142aff89a49c,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000009b488e21aeb418e8913f6bf721b3398693a3875788a3e013717fbba3c6ddaafb4073378d121cc1f2f99c072b7f8eba600000000000000000000000000000000144346f013254cec17d8423f534d54e2496df08193ed65304fe300b47a68c8d322b6ad84f748529928d64298be5ac1f200000000000000000000000000000000102c92272571b73a7df754728d7293fd8050d9dd2b8605c3f7722e6de541b7fc6a81b01c1cf15e5241ee4ee1f81ab39d000000000000000000000000000000000af1cd6f23bbd3e9ef75eed6d6d99a7cdd24574881b3609e45c4adbf82e08259d14701fcc5b6338ecf52166aecca003700000000000000000000000000000000026a1a4c3eb54de2ba4509dc806db9efc7e26247d501cb59c525b8dd15d03b91abafa9ba5816c22e1f8ca159cda34bd500000000000000000000000000000000170b510ec227fe8534a2cbb0f405756491c4f6832df552bd23980ab0946725371b3c24fa8b93a38bdcd47e1026e1d2a0000000000000000000000000000000000d327350067f7401a228c4fbcc7375f2edb058505ab34341df865a82781448d8e053b478e97a3ff79458b264a0dc186a0000000000000000000000000000000014a92d6662933a9eec6134002fb0e23a0930a964bed5bf84886bc3819516af19fb8bee2c0291c518119f4f4198eb67dc00000000000000000000000000000000102c92272571b73a7df754728d7293fd8050d9dd2b8605c3f7722e6de541b7fc6a81b01c1cf15e5241ee4ee1f81ab39d000000000000000000000000000000000af1cd6f23bbd3e9ef75eed6d6d99a7cdd24574881b3609e45c4adbf82e08259d14701fcc5b6338ecf52166aecca003700000000000000000000000000000000026a1a4c3eb54de2ba4509dc806db9efc7e26247d501cb59c525b8dd15d03b91abafa9ba5816c22e1f8ca159cda34bd500000000000000000000000000000000170b510ec227fe8534a2cbb0f405756491c4f6832df552bd23980ab0946725371b3c24fa8b93a38bdcd47e1026e1d2a0,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000001756d051ce0ee9ac0fd83b9a069086cfb62164d5131a2c7be22122cc64fe74590ab5b69e02b37a6075384df9552d1d6b0000000000000000000000000000000013826bf44ff233e612a9dc8d47cbb3aff4f1fb5abf0ffbd35f4124531bca696371357301d12ed89a2974de5027c2c59f000000000000000000000000000000000ec934504ad116a80cf15a8d9a3a0bd5db18139560adbc6de32b5871198df9ecfe122369dbce5a19eeeffffd510f403b00000000000000000000000000000000007e3f75ccfc96dbe63e7b877420bccfccf2a7a56994fcea725c1b9f1823d93b0913ba1293f32493983ebe18ae27ce6b000000000000000000000000000000000ce8b2413d344263a5e598900af1524bf863e92fc3c8a2b1f335e9029081de05c70b50b97bef75044d8083e92f99b88a000000000000000000000000000000000a47a4c7b8b35b0729b43db9785a9f15c7357815e5d1ddf02d14003923120a734a1edd931d39d9261b55c145f8c69443000000000000000000000000000000001756d051ce0ee9ac0fd83b9a069086cfb62164d5131a2c7be22122cc64fe74590ab5b69e02b37a6075384df9552d1d6b0000000000000000000000000000000013826bf44ff233e612a9dc8d47cbb3aff4f1fb5abf0ffbd35f4124531bca696371357301d12ed89a2974de5027c2c59f000000000000000000000000000000000f3f5ca684120f4b7132153ba02995e88c50ac830aa65e23978ea6be09bc838249adf113e9b463cb01fe0eee43262d5f000000000000000000000000000000001270984624e5da5aeff659f5b75d3e7e5ec655ba342e318b0643672f6e71b84916ef767c58daea149f8029bb046e548700000000000000000000000000000000064c7217b420841cff11994a5f9ba682f7df02be4c8ba2027b67d33bb51b0b956137f61ac037d5551d5ca2b880e4140c000000000000000000000000000000001813131d845fc7bd523c7a295f2738580d9b39f6198ff19112b9dd38276c3045942e74c59b4392f59de70e7cd2ee87b0,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000003dfcd47087531272c3fe93d82878c5a689eba15fd67534bc2fa045b1995eca650e19e020455f0b1cbe599fb27b8352d0000000000000000000000000000000014cc297621e8b9d4ac8b1ced78c53d61261e899de0077b73f4f119e6fc50d5aa10b5111640eb3390057510825a20213e000000000000000000000000000000001150494bc162c0f414d31816adb18256b7d9fc6593f89b30b76522566667dc302050acfba7106031e99bf580fad24aad0000000000000000000000000000000005c920cd2ddd5d660e3246962b466f34a28449fe1790b9312f81fa70e13c1835970d4b807352cf7d89efa093120d527a000000000000000000000000000000000d384fa4729576214cf631ac1e6e2af54176954bd63f13cf15f2cd3c1db4cde4758d260ea4ffc0606aae700bca7ca7ff000000000000000000000000000000001824caf3b35915f528dfbc82bc5d56b5f8e7ba2b02056f6e27cbdbb0a54de8d4749446f14b116ff36b9fa773808c647d0000000000000000000000000000000011d4918642919c801fff0962062a387a4dffe693ec09cd3d0286a18e3a22c84fc09e8396ca82e6054d8535cd888179230000000000000000000000000000000016a1f0c7fec5647dcce688d3e4e526749bbf23c1fcd9e9168ace47399f9198c9b3a6b8aeca68febde1b7beeea0641aa2000000000000000000000000000000001150494bc162c0f414d31816adb18256b7d9fc6593f89b30b76522566667dc302050acfba7106031e99bf580fad24aad0000000000000000000000000000000005c920cd2ddd5d660e3246962b466f34a28449fe1790b9312f81fa70e13c1835970d4b807352cf7d89efa093120d527a000000000000000000000000000000000d384fa4729576214cf631ac1e6e2af54176954bd63f13cf15f2cd3c1db4cde4758d260ea4ffc0606aae700bca7ca7ff000000000000000000000000000000001824caf3b35915f528dfbc82bc5d56b5f8e7ba2b02056f6e27cbdbb0a54de8d4749446f14b116ff36b9fa773808c647d,,,invalid input parameters, G1 point is not in the expected subgroup -00000000000000000000000000000000111650bcc4c7deaa92ef43d8355198c1c0bc402fd758933765495eaf2a6c11ea6b5b6fb4a89b00040c900fdec791c7b20000000000000000000000000000000005519640447380e96adae5042193695193484d61ce0cf26acca8c96932be68e61ad6cd23515f13f8fa4fbdd6ca5390e40000000000000000000000000000000000c6f11a5306aff663038d949d08092275c7c507f68605bf9a4b591138f578f9c454ce12176d4759e1c95f3243185b9b0000000000000000000000000000000018b28c875d620249ecc25cff0ced2b3766aa66254906c69b7157b6e418a332293723b4b268d6f9d97f566b4998997adf000000000000000000000000000000000ce5e55ebe8326ee5650122f4b39dc96fe95aa4c48d26f70580fd97be90782bebfdb2d94e784786c4188ef99ecc33f55000000000000000000000000000000000632c0e5c998679e92ad269e587e831da5dbeaff3eda614d904e11c0e4dba3c87b40101cfe2f579e8015731d0ff22ac000000000000000000000000000000000111650bcc4c7deaa92ef43d8355198c1c0bc402fd758933765495eaf2a6c11ea6b5b6fb4a89b00040c900fdec791c7b20000000000000000000000000000000005519640447380e96adae5042193695193484d61ce0cf26acca8c96932be68e61ad6cd23515f13f8fa4fbdd6ca5390e4000000000000000000000000000000001780ae947388f0e055883d231f8809eb8fcc5e30eec44cbfaf11c52d4fc14bf54480c439e805559f64bd6f2085e12f1600000000000000000000000000000000142aaed1757c6f6ed83d532333e6f8f340625864fae2e71101d1ca6787045189dcb408c433caa3a19e9220f623398aa5000000000000000000000000000000000e29f5acc8998ea0d02d72559230f119ab9f8c4a013c63baa553e6ef7f5a5d38427f5b1e82b0879201ffb5ff3e23911c0000000000000000000000000000000000b934ca967385631e767483d6279afb80ea063b624491d5d837bbe4509e1f54a90b9ccb153039fbec7716dc77e28755,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000018bccb5411a58583445efe99e16d0b1fbb8ec71c6c8175a73e8d289f102d6925b68374d8986bbe9353640565fe30d3200000000000000000000000000000000013036f4649ab1dddd84a12d5a3efb93f8187824211bda276cef8376ffc90f5728bdef3b5b1bcafd59fd9ecf3bf9acb76000000000000000000000000000000000a43335eb6ff3bf2daeeb1eaf44c2782eeb517e82e55203a247b7a396e26fdf85f93695753c52c68819b58c95f361820000000000000000000000000000000000c240b7896b3dd0c318dc9ffcaa001d20bff288def3ce42752d660fd705e1544e292a5a0aa3a9a80ae91cb47cb938989000000000000000000000000000000000e5195bcc4ee8b149a769322165b6a3157ee7d04546643390adc812b6296675dbd31168b268df869a6722a7c8f51c79d00000000000000000000000000000000004af7dc8a5c552f00d55b996d193a9571173ea829eba8fadfa7becc2f4149ee7c6c4d2c8c7b1970df33cc56e4506573000000000000000000000000000000000d7cf8be632d98ad21137a983fa55acd08492a9d1e9d6caaf520713a10f5cd71c9a155ce9ba65044f42228959e893556000000000000000000000000000000000ddbd265cad3a9c525a30ebab137fb1857a9847e66c3381d51de1040a48835701a1f5627281f6cb36181d8c1c337e58b000000000000000000000000000000000a43335eb6ff3bf2daeeb1eaf44c2782eeb517e82e55203a247b7a396e26fdf85f93695753c52c68819b58c95f361820000000000000000000000000000000000c240b7896b3dd0c318dc9ffcaa001d20bff288def3ce42752d660fd705e1544e292a5a0aa3a9a80ae91cb47cb938989000000000000000000000000000000000e5195bcc4ee8b149a769322165b6a3157ee7d04546643390adc812b6296675dbd31168b268df869a6722a7c8f51c79d00000000000000000000000000000000004af7dc8a5c552f00d55b996d193a9571173ea829eba8fadfa7becc2f4149ee7c6c4d2c8c7b1970df33cc56e4506573,,,invalid input parameters, G1 point is not in the expected subgroup -00000000000000000000000000000000042f294cc86c53cbc520ce6368a7149676d8bc4acf708485057c8caae31409ee1586a735c3e1f416104aede85e40a38300000000000000000000000000000000153de67ca08cdb77e92091e8f04f75d17ee5525c5ec3ccdaca907b5ebc1cfcb6ce9d6a4358999cb00ae5e824d008e7fa0000000000000000000000000000000007e00b1cd95e3f9cbb2bf80404abd9768da125c42b746c2afde0121fccfdcc2431c618d646764bc5137657d2f0fcbda3000000000000000000000000000000001170cf72d827f929cb9efef52b559f8459cdd4d60464e0b3bc6e55bb6cf83cc2e9d6314b2b80e4e4f6a3c6292d1517b50000000000000000000000000000000012a7806f98848dd9c79f74e4a25812a6fae59ca73472fd20db2ecb8f732ea59294647831e03b58c60f7a71d9892ff26700000000000000000000000000000000165e6e0a602c7a1a3334a880ee47c4c440c27cfc1ab1ea6d9df592e98d21f85519d1ddf402f48ce7dc8a87439b3f42f600000000000000000000000000000000042f294cc86c53cbc520ce6368a7149676d8bc4acf708485057c8caae31409ee1586a735c3e1f416104aede85e40a38300000000000000000000000000000000153de67ca08cdb77e92091e8f04f75d17ee5525c5ec3ccdaca907b5ebc1cfcb6ce9d6a4358999cb00ae5e824d008e7fa000000000000000000000000000000000c8373f2969862e64e7a4c319a5e4db5019391ee2fd502c86bd074de5b3a1eff7917b3517175eb28efb9aa10057df87b000000000000000000000000000000000648b6bee01e4bd215ff4b51580d254e09a9b88d879ec2a0a42b0fe80792da10a9fc4d1c47058cabddbb48e94f0df98b000000000000000000000000000000000286667f7ed2e43aa08ba81a8ae4dd0487a4d11425b1e572359783ebda7c181b7dd62857a28ae3b05302cf2773f72bc5000000000000000000000000000000000349436e7b0b86db8e77d7a4dcbeb16c541b994e6f71c45098fd198991a27b4fb48025d0808000d54fe6b9500da80db7,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000b09f1c099c4743404de9034dadea6120bb4b120e81d415d047d575423d8261af3aeadeca04610d4bbefcd5fbd48d7360000000000000000000000000000000019e08ce27700db908d40e8907434068819f874b79b1540a03b856ba8898be43bf7d97b17685ab54de67602b8fc41f90700000000000000000000000000000000010714e7b0316ac3ddc1836a569befe3965800dc3cd2d9ecca097f2eebfebcce7cdc92df0110e4b872a673d5a0ebbda40000000000000000000000000000000016700d8c04f159b7a019cd0f7ade116448e0657880d364f19d1f6ea099222abab3b766d3088bd9eb870cdb3eece5ee4d00000000000000000000000000000000054f6e8c85be6d914162702dbdeb82801d598e504bfec39a2edd1035f69deccb605af437fd4ecdb23979e993904edbfe00000000000000000000000000000000183e494cd0b25d5ee1e8f1ca4054fffa4d730f547e072af920c88b9d613deb21dac38043c385fc9f9bbd6e708602ae1b00000000000000000000000000000000155d3e886cce6f257513529e40c21b5657ef1ff1f4e71bc32b968db3e05652b1ac780da573fe1a1b94b7fef86e7c260f000000000000000000000000000000001184cf09544ec2826d0101d2b79095da6e5f77d453203c52ea17b6476360ccf166ef092eccf86dbe3a260f7fd25a279400000000000000000000000000000000010714e7b0316ac3ddc1836a569befe3965800dc3cd2d9ecca097f2eebfebcce7cdc92df0110e4b872a673d5a0ebbda40000000000000000000000000000000016700d8c04f159b7a019cd0f7ade116448e0657880d364f19d1f6ea099222abab3b766d3088bd9eb870cdb3eece5ee4d00000000000000000000000000000000054f6e8c85be6d914162702dbdeb82801d598e504bfec39a2edd1035f69deccb605af437fd4ecdb23979e993904edbfe00000000000000000000000000000000183e494cd0b25d5ee1e8f1ca4054fffa4d730f547e072af920c88b9d613deb21dac38043c385fc9f9bbd6e708602ae1b,,,invalid input parameters, G1 point is not in the expected subgroup -00000000000000000000000000000000065a0b9822a814adda6f22f58f0ce0d6db9b32dbb2766077b6fb9bdf084ba584dc749d746740804f826d17634509875f000000000000000000000000000000000d4284a951847bad1b602396a5d5193c3a794826f58122c9c16c6e8e18f6ec2d0e17d8ca3cda9c3bbc92c51794ec7fb600000000000000000000000000000000177f2a7306144321cec932fbc1a10d58073d6915bf9ca97a05b54fe05f525ed0c327dbdb1205b70bf7ef8cf35a61c4e400000000000000000000000000000000089dfb5d4a99380761f75a94deeb6a48854164687f1055b22328d45b9792cf884ae597db1d1a93f3f2633d14969bb260000000000000000000000000000000000b6598d4c8c590f2fbbea7c48899ff43d73087becda4974184eb3ebab605e8f90497caa2fce915f7214dfe244277a437000000000000000000000000000000000acbeeaa0ddf12bb717fd32ea32ef63d137e61b5294c162d3b67e02dcf1075838bd0208d7f8edaf15f023611b774c14a00000000000000000000000000000000065a0b9822a814adda6f22f58f0ce0d6db9b32dbb2766077b6fb9bdf084ba584dc749d746740804f826d17634509875f000000000000000000000000000000000d4284a951847bad1b602396a5d5193c3a794826f58122c9c16c6e8e18f6ec2d0e17d8ca3cda9c3bbc92c51794ec7fb6000000000000000000000000000000001a002703d6da9def84f6ce69f02ce952562a7bab2413e8d58631a3387a1f4556402fba6a39b37bda22d08a68b0230b17000000000000000000000000000000001366c2a752aad0e111adb716b75459c067e275c692bc440731510d56135c3238b410538dae3ec328bcd817384d8a6b6e0000000000000000000000000000000003321a09e7290272d75882b64d2c958d4434df3499c65fbbd1236add534db804081d29b0b34167e05f4de1d8065b5b530000000000000000000000000000000001b6e16cbfe9bd8a291dcadd4599f6edb147e261bb76caca726bc89b3fa1863922e202bd5fc9afa5bfec9923f43fb526,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000012e6297c3ba79bbec9a84699ee4268a37617d21e3ce984ba1134041e539f0a5f0ac11165e835ed1aba23d3b2c5f804d50000000000000000000000000000000006c8881033aa6aef80b52f0744c0c9058f6ee2d7eeba8a749ab15af41b19be8d6aae30d820ed0a0b50ce327c7baa1a2b0000000000000000000000000000000012ff0494d308d3e7321ad4c4000e9dcd19552d5e4bce8504760f066e2fb2509279b01f1568e3c3f6216bd5328cbf72db000000000000000000000000000000000038c6e8f0fab30b5c8e4323c1fd29527845c29e1a26c70b8e5284f7ca55fb55ad4ad5389b5280927b98907132f26b76000000000000000000000000000000000aef946b9b9e9fcabb36507c1cf441df2f5ccd71ef9281dafa5e25bf07d69556e4143ab402dfb38aa756bb6ee009a6890000000000000000000000000000000015f69bc7b0a6f2cb64fd0897b421e339fcc8637efced8bf33f5aed809a38b49a2e6376d18b1bff0ef70df1b7187ad04800000000000000000000000000000000019a5a9faf36413a1e48a97458b7c416a634e1ed92fbd89fbe4593f42abad0ada72f50f7a1e1a802158ccdf923b497e4000000000000000000000000000000000e0b851da6a8005b83b2afd272a6cd017bec39d9f55b3230b600c50fb9bd5cc1bd229671f6b2c7f1d78652e4534745190000000000000000000000000000000012ff0494d308d3e7321ad4c4000e9dcd19552d5e4bce8504760f066e2fb2509279b01f1568e3c3f6216bd5328cbf72db000000000000000000000000000000000038c6e8f0fab30b5c8e4323c1fd29527845c29e1a26c70b8e5284f7ca55fb55ad4ad5389b5280927b98907132f26b76000000000000000000000000000000000aef946b9b9e9fcabb36507c1cf441df2f5ccd71ef9281dafa5e25bf07d69556e4143ab402dfb38aa756bb6ee009a6890000000000000000000000000000000015f69bc7b0a6f2cb64fd0897b421e339fcc8637efced8bf33f5aed809a38b49a2e6376d18b1bff0ef70df1b7187ad048,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000c321b54ea1ae6e893f2c28e72a3e4bed4a9aebaf147716178d3392c959e79b6f3393d738f3722a0339c773da3ae56760000000000000000000000000000000005d2c477e1c9333eb642bb40709b042816cc54134fad935942cc08eb2db0c1582f9bf06518d4fd5577df4634332e70e50000000000000000000000000000000019123b0d9c362184620c90834730c58ec5f9becdb2f3c6c00fd157ac83c16a815efb5057011d00c774d0de626274d58a000000000000000000000000000000001936fe98ecb82299a85304213a3e30c02d90ea871661b34f664a825184c2d1ebad84d144df88c479b9526222a7fe9ead00000000000000000000000000000000081a6abf02a0a236ba6006a95a8ab3f186e72f05b00f2b686049cf980898d64a71bf2e41b6b276ed6556cf83a3247b6e0000000000000000000000000000000012162cab3a7d92acc12efec9672ecb4cb30ae208eabc77608748e968a84ec0de81678df45d1655e45a19162b06354a99000000000000000000000000000000000c321b54ea1ae6e893f2c28e72a3e4bed4a9aebaf147716178d3392c959e79b6f3393d738f3722a0339c773da3ae56760000000000000000000000000000000005d2c477e1c9333eb642bb40709b042816cc54134fad935942cc08eb2db0c1582f9bf06518d4fd5577df4634332e70e50000000000000000000000000000000008b24839939deb424bb0c7bb171064e01453008ada6e3f14fd3a86db79162d0f9a851eb6abcb7dd27f93df0f7ff3320300000000000000000000000000000000036bdf42585414a8fd616bf967ed2ad4eb2b30a7581a58691c6d58e5d54fa152b42427c98fb3094c718943d9d014730c0000000000000000000000000000000002b542c2d6e8862495b2a6937f1fefbba53c228af512918bcc5b39083125c41340f1b5f1c60696c7c07f6705dfbcae9100000000000000000000000000000000030516a5aa32954dc083531035c55aa623d5f53c07b7bcff54cb9bf04d567a293ee55b2027cdcb864b133eac0f3d5274,,,invalid input parameters, G2 point is not in the expected subgroup -00000000000000000000000000000000018a649f727e9ac88994760a97b129d3347d30174d54a1442542123a76f805e1a48e7a71f3704eaca90b3c17c538d26b000000000000000000000000000000000a5c006871d73a11d525df1921d256f880c2a3c0aea04ed27e83d5c264d3f2196c997347299fb04149c4083876bbf3d5000000000000000000000000000000000995b9bb378a7c98ed661b493ad17b3aca367cc6aa6db24fc421d82455bca4edae6c891c191023ef2113f3c7eba79662000000000000000000000000000000000213eb30b55a6ab8efdaa67c6c99362dc62022041a6ee76f7c72cc13ffaffddf88bc68ce3d4ed36d54285b177bffc1eb000000000000000000000000000000001202977411cd6674c957c74471e269ded8140f72483b5bf81846ec60be1748080e67e38c8520b0b71793f2be9d2a5b1b000000000000000000000000000000000d49d0b96d12bbb9ae56cae73bf240cac03daa2743557e6a78f029883752ba011cbe216618b28cc173a186750602eb7800000000000000000000000000000000076ed600ed860f16ec5dbae3f09471302bf85fde7702b3376b0d670f93560e77699bed969e7001570f44dc5e37aaa830000000000000000000000000000000000c993a8b08d2eb00bcee05e1c09e8a37834fac53643643402f60fbfe2cc7d795f5c68f3d6a32c8604c37211585830426000000000000000000000000000000000995b9bb378a7c98ed661b493ad17b3aca367cc6aa6db24fc421d82455bca4edae6c891c191023ef2113f3c7eba79662000000000000000000000000000000000213eb30b55a6ab8efdaa67c6c99362dc62022041a6ee76f7c72cc13ffaffddf88bc68ce3d4ed36d54285b177bffc1eb000000000000000000000000000000001202977411cd6674c957c74471e269ded8140f72483b5bf81846ec60be1748080e67e38c8520b0b71793f2be9d2a5b1b000000000000000000000000000000000d49d0b96d12bbb9ae56cae73bf240cac03daa2743557e6a78f029883752ba011cbe216618b28cc173a186750602eb78,,,invalid input parameters, G1 point is not in the expected subgroup -00000000000000000000000000000000012065f7dc3b8d6d6dded1106ecd071ac0e5f73c2aea8d088bda7687ccbb34625e2da53befb200d0885b25c228b3637a000000000000000000000000000000000d222a3c0a560f9e8a6624d9100b72e62f515f1d9384ac966d99c1761264ff8e88f308e57ddc94f156655dc310b3976e00000000000000000000000000000000109fe60cebfba62b89ae166733a097629026ccee41c95ad0260c96b772293e1403247b0451d149d527212c228ca6733a000000000000000000000000000000000a497d6c0285f7d5434c42605077528e24eee8185a615c39d2caabc570bcc01b40eadb937d78e6ceb8572115671053c8000000000000000000000000000000000f0d14ceab429a46e5568200034dba88a713899a12602529fd015e2c792191d8ef492a4d685ed09a75f638ad56f02ef10000000000000000000000000000000004d4b477fa154cd86a0934130c27f4eefed4b986da5afadf558d4fa003d2480a93b351798a24c2232e3c09c0bc33e7a400000000000000000000000000000000012065f7dc3b8d6d6dded1106ecd071ac0e5f73c2aea8d088bda7687ccbb34625e2da53befb200d0885b25c228b3637a000000000000000000000000000000000d222a3c0a560f9e8a6624d9100b72e62f515f1d9384ac966d99c1761264ff8e88f308e57ddc94f156655dc310b3976e00000000000000000000000000000000129c37bc44471eeb38b484699156862250e40df9415876f8a0da3d2f2504bd5dfe76e7b67f103a94c20751a656c5c1020000000000000000000000000000000011f24e9760017ed9120e3e0c25f57ff9e70f4f15265cf884d9d978225996f21905b32c0f918e5ac30e095767779cac8f00000000000000000000000000000000012e10463254df4bb4765a10ba47f47b6ca7ccf1ed289b8a9ccc4ee5cffde83a45077c3f093d0da6aaa5f38ebc3e5f0d0000000000000000000000000000000006755c3c202da2f65be8880e12485e2f8ea85b8e6c4b21b559e2a45b5f0977e01bba8685e4d7acb4fdc045a4cb6bba9d,,,invalid input parameters, G2 point is not in the expected subgroup -00000000000000000000000000000000182c68fe02eb491e1c0939304135485dcd2955c643ec67198d4a07075f0ec96441ffc1274e75dd36b103053660811643000000000000000000000000000000001308eb23be0860718e6ce06c2f24f9f94b7a72c557559ba8e1a9e3bc4eb4df009472adbfb26689900a65ee80b976a5c200000000000000000000000000000000030cc52d7901d0360d10f344cecc8325412788cc30a912d5de3fa9bdab18db44efea235c5d34bab526f3b8ecee2cbb8d000000000000000000000000000000000cda35f561c19ebd85a445ce8bb1618b446c7013c07606ce58e0b5627a5c9e7cb200e2b8ee12a0564730279e75b469b500000000000000000000000000000000055ad0655a96f6dab5a432e7d2fef57a6a11113070444089df23b4b911e0994b90aaaaa2c62d06756f4704fa218f7c350000000000000000000000000000000011d22438d7c162d34802a664c254abaae07659902e1f1bfc2bdffa6c17eb11bff5276474cc3cec9507e28685f1c21bb00000000000000000000000000000000005711605edddc03aee2e53b0945162616b969fc4ad2c15819df360533120dd2ded321aa929d67dbc84ecefeed531a49d0000000000000000000000000000000012adb2a59f85343c923642ea4be500595ec8c76755c0c219e5484a7a0f53a4c3f9740cf6973aab349973295791472e5900000000000000000000000000000000030cc52d7901d0360d10f344cecc8325412788cc30a912d5de3fa9bdab18db44efea235c5d34bab526f3b8ecee2cbb8d000000000000000000000000000000000cda35f561c19ebd85a445ce8bb1618b446c7013c07606ce58e0b5627a5c9e7cb200e2b8ee12a0564730279e75b469b500000000000000000000000000000000055ad0655a96f6dab5a432e7d2fef57a6a11113070444089df23b4b911e0994b90aaaaa2c62d06756f4704fa218f7c350000000000000000000000000000000011d22438d7c162d34802a664c254abaae07659902e1f1bfc2bdffa6c17eb11bff5276474cc3cec9507e28685f1c21bb0,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000001d70e0c28a776a0fef6d7d6a729f03d59c20a4c1f28bcb28645b996c307483837361d146b73fc808041893ac1738365000000000000000000000000000000000a68b5a13a6e5ffb88ad2618be4a197271d08e55781d21c367209c08fab2545b99f8e1e0b523854f075a915856f7483d0000000000000000000000000000000008c7569bb4e8d3b213dff2c132e5954e9622edc874dc82fcd674405cfda14dbeeb323d1605d06a92231f44339952333300000000000000000000000000000000092decf1271f8cb90a67c6cbf7eb0cca0c2d71c698470193ef495e494a8a1ac3b6bd78fa6e4367874ba18a00f6eca025000000000000000000000000000000000dfeff0f041a1868cd0ede471164f24dcac619c56515b8eec5c8aea870a79a2d03f0e1526eb1e8cbcba908969b5e952700000000000000000000000000000000109aa32bee0a83dae428e388a39ece51fd3f392ec841ffaa2554972528b7f55ca36b19ef6ae585e91995a50c0848cccf0000000000000000000000000000000001d70e0c28a776a0fef6d7d6a729f03d59c20a4c1f28bcb28645b996c307483837361d146b73fc808041893ac1738365000000000000000000000000000000000a68b5a13a6e5ffb88ad2618be4a197271d08e55781d21c367209c08fab2545b99f8e1e0b523854f075a915856f7483d00000000000000000000000000000000065860fd6efa478810b70e56ca788706bccb63191649d7b9e92941efe264bd4720b1f536d90a034b681ec9ee16f50b5c0000000000000000000000000000000014e4277fc0e4827510d55f27162d85d362f99ce57a7baf74f62567d42efd3afefb61782a6ba85d4d0e27184dc15b30ea0000000000000000000000000000000004a18f9b07e2c61210d7b00d54dd1e2895692b928adc0a4597d4ff7efbfd7215e764572275cb78f29d106aec578ed1a200000000000000000000000000000000025c5527f68d69ca8d86ffaaa3330784b9a9e32069cdc2e147c81d9a39eb181e39592a126d428e6f7963d34292f44e4c,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000010f18fc4c3d422a64f6c8935636cade47636934cc6c7d5077428ca6e2641068f4668a792a20c6bd4890da09de9765409000000000000000000000000000000000795df122ae83682617000aa2f80fb82cf933b2e5765fde4409249ac06d8eaf2a92938fb7bf4cc5717e4c604b68afc1f000000000000000000000000000000001825f573c335f0e3ad6ca9f721b529ab1a84585094c034058fce2f84185d99ab78e568b7cf129adb65501c266db679ff00000000000000000000000000000000114d2a8a69b83b46acc0dc3cde307b4690d2335c18b583874a0f5f6ed6b4e4ae63fb114d32479d56d3d2ce6393a128a900000000000000000000000000000000088c08b1b66f37b98e443f9d390b9934ee8edee075788a6ff9620c386f8ec4c1f6455704574b65086170c8a37f1728be000000000000000000000000000000000366a281910a6cb906b8acdb68180c6068b555c00d84b2cd3153ce5b8dc64532b3977d186202d1d6c00673b7ffe42c1a00000000000000000000000000000000067458ca402c19488e2515037abf9323ab8288e0e11f7cdee18b3da50cfa377435cfde1f63dcdc451ce65a05641cae370000000000000000000000000000000010ed9c895629bdafae66ea176388be4e4ce45cb13ecbe0869ce57f0f48852b6b8c47bcc4a14fc5327f1df372ad9f5d4a000000000000000000000000000000001825f573c335f0e3ad6ca9f721b529ab1a84585094c034058fce2f84185d99ab78e568b7cf129adb65501c266db679ff00000000000000000000000000000000114d2a8a69b83b46acc0dc3cde307b4690d2335c18b583874a0f5f6ed6b4e4ae63fb114d32479d56d3d2ce6393a128a900000000000000000000000000000000088c08b1b66f37b98e443f9d390b9934ee8edee075788a6ff9620c386f8ec4c1f6455704574b65086170c8a37f1728be000000000000000000000000000000000366a281910a6cb906b8acdb68180c6068b555c00d84b2cd3153ce5b8dc64532b3977d186202d1d6c00673b7ffe42c1a,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000018339c70bcf5f8cbf7f3d67dcc7b40a937045b53243d6bcd417d467b1a264b960793171fda821c4206d10b4fe8488e170000000000000000000000000000000017907a4fd66b2a8b113352975ed70c0833a6fb51568ada67bf9f8cdc770e30a3a5fa305200691f4e8dbf210cbefeb002000000000000000000000000000000000b46ea3a7acd5615741210a761f7ef55e7381f52593f02e20aedc0753861acfabb5333dc5bfd829656511070b642e7fb0000000000000000000000000000000000989e2bbad608bc55d0749e0de844e001934d28a58178377d8607a1c5d5c85eb346ab94bd527b36b965626457f6aa300000000000000000000000000000000016ffa6209c14e0803789f94886e96bfbab47e07ef745557f1d1dd48e887086424cac57dd9a624de73bb7f3521de3fbe2000000000000000000000000000000000fac98b30fb441d9426f61bcdbb149b103fa9ec3b85cbd5f755d57474bbeebe796b96fac0ba1d4b75897dea8e54796970000000000000000000000000000000018339c70bcf5f8cbf7f3d67dcc7b40a937045b53243d6bcd417d467b1a264b960793171fda821c4206d10b4fe8488e170000000000000000000000000000000017907a4fd66b2a8b113352975ed70c0833a6fb51568ada67bf9f8cdc770e30a3a5fa305200691f4e8dbf210cbefeb002000000000000000000000000000000000b349ddaccbdd1381d9eb4ae7e65db31733fe3c24f38c21f5a20298bd8e01db7ebbe3c703327a5f81c89c040a5e17c67000000000000000000000000000000000dbadd08c77f8c210439d48fb55c741dc83aa9adbe7153bee1ddf1d3df824938c14d85a528c285db28df1d0fb22b8e820000000000000000000000000000000014d76b082d032e23130d6e55c0560080a5aa607f6cdfcd683d4e2450aa0788a99a005ccbdefdb3f626a045fd7cb9ed6400000000000000000000000000000000124130e29fb52ffc0d8e8ec760619de7397813b8ce598afe97f9076899f13dbe35417a6f94a2c4bc0341c933ab8c30b1,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000001977147ab98c2e88f46f038c821e85fdf476bfe7bf7b7fd633ecfcf1fd2ef339b3b5cc686f4a8937e16dfa29ad8123f7000000000000000000000000000000000ef669778c61c21dbd4681483c51269a74a3ba1b1f75796b4680f0e30a286aa0173147b206f91c84731ec8ead074d187000000000000000000000000000000000e0f7595e4c136b4d8bbd1eeb021df7dd2bcf1d9f98e4fa293f7edab635e019af87c138275fefacd806213177af40eca0000000000000000000000000000000005dc209d6c86f1871637998c10490a70371f9e00a68d1363dfaeb62046473dfb4bbd3b18b943439f75c45a1ee7f264a90000000000000000000000000000000003d215567d1e8f504a72658d48fa51374ac77234552c17db4033af780133d8516bb0769678ecb50b8b9eb950c2dd73e80000000000000000000000000000000004d780849b731012e1e5732d5f6d32c659a95c3e1c8f5ef4841fe82afc6f0aa309b1e02dc2554a4a4ee781be2be2149f000000000000000000000000000000000073439cedc08916d00609c6152ee2844be85550ff5c199e9e9dddf09bedfc00d907dc85255651cff3e28a74d3b4836c000000000000000000000000000000000e57e74af4f2d6c08843152cce6d095d00679998463bfb41bef9c57ba427e14715e9e0da0e8c5193a798cf92590b34b4000000000000000000000000000000000e0f7595e4c136b4d8bbd1eeb021df7dd2bcf1d9f98e4fa293f7edab635e019af87c138275fefacd806213177af40eca0000000000000000000000000000000005dc209d6c86f1871637998c10490a70371f9e00a68d1363dfaeb62046473dfb4bbd3b18b943439f75c45a1ee7f264a90000000000000000000000000000000003d215567d1e8f504a72658d48fa51374ac77234552c17db4033af780133d8516bb0769678ecb50b8b9eb950c2dd73e80000000000000000000000000000000004d780849b731012e1e5732d5f6d32c659a95c3e1c8f5ef4841fe82afc6f0aa309b1e02dc2554a4a4ee781be2be2149f,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000005585544fc7ed448c7939c42235549edc98c5d9a793ec918274b49687e8b9267d53c2e5d66a44d889e8f2e94abab43490000000000000000000000000000000002a091dc69d5af394d408a3b5b60debffddac4db228c613b2e2f98b932aa8f90d9f5a77129fc0fe69b93ca64b0081eb9000000000000000000000000000000000f694959a69b0d692e167e95524555d58d06621d77f46c54b7f0da0a45c4cabdc8ac916b0f2052cb99b6f0f5bca36fd9000000000000000000000000000000000df814c1cf62a7a089984a3afe3f7636157ee17bbe0dde1aa2e56fe7168a3fee7c6102999dfd55b282f1a6a4ca0e0cda0000000000000000000000000000000002ce0806a288c2b9d7e03204f573b06c440be782469cf7f1478f53d5b017fa9ea3b1025cc5de378e2186c150cbd1bc0f0000000000000000000000000000000007d3c1d2c5806e73119cafe9efda5a8419679c89d17f7a90fa6302485d4efe9e44b287f573d576d7f45589c7501e40ff0000000000000000000000000000000005585544fc7ed448c7939c42235549edc98c5d9a793ec918274b49687e8b9267d53c2e5d66a44d889e8f2e94abab43490000000000000000000000000000000002a091dc69d5af394d408a3b5b60debffddac4db228c613b2e2f98b932aa8f90d9f5a77129fc0fe69b93ca64b0081eb900000000000000000000000000000000199d1db3ab960c003575ba7a53f489159aa2005bc9a30bc23e952b57ac892a2340a8adbe21eb07bcbac255be231c49120000000000000000000000000000000014303bc0d1c9748ebbbc187486650cd7651e51ebeb1bb428e153ca5e83fc4b118c7575efc03ac0ba500c6149f91db23f000000000000000000000000000000000b6383243f6914d41d2947ee74ccd299a20741e33bdad3aff2d05de662fb4d7b9b9266085bb71dee8c13dfbb121cdd320000000000000000000000000000000005d515210d948c48ee9f7ced4c23a5eb12c6bc26c974d518af4e14c1b2b2c5a286c2bc4d51ff5974eb939b4395f9d8ed,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000000ba91d035c7a2da7e14c400bb137b66a4d8f563004bcf57a01f21223225b93f860eaab9c429b915a130115c8f61c606b00000000000000000000000000000000196c7f0f6b99772d1a5e97afd92a6ab4916a2f2df709bf6393a60fe29623b25dbdc989f22715fda427bf8cb84cdfd033000000000000000000000000000000000b362ce289c7edfb507b579fc8d344c5e7bfa8d58bf3629a41af7ec1faecfb9b95139d9a8159804691047e4b18bc1cd600000000000000000000000000000000112bac785b4033f11b08e845c8c5ce78e40138b0cc0b998dd8e0213bbfe0e5b96a83ff2b53ee9699b18efffdf879602a00000000000000000000000000000000157885a39334664681d8425bd60e9c1d12dd1ef45b9a3c40956df105cd3534ff9378203755119ed302a54adba9e5858d0000000000000000000000000000000008237a9ffe95f89a24e1e3a82d8f127766e2173505a9ef0e715b1ec711619664a12d86d247e530049ee542ee4d20cc7000000000000000000000000000000000072c644635936a91dcaee40e3b4794e634c315a39a9cb5cb99ef6784b332fdcfaafdc80e228cd19d0104d5796f584c350000000000000000000000000000000002318bea9077484e9c1937dfa63774b5ecf6fc63ff06e5cb653553d5111a981c09c907069ffe11b5704ea60a99873283000000000000000000000000000000000b362ce289c7edfb507b579fc8d344c5e7bfa8d58bf3629a41af7ec1faecfb9b95139d9a8159804691047e4b18bc1cd600000000000000000000000000000000112bac785b4033f11b08e845c8c5ce78e40138b0cc0b998dd8e0213bbfe0e5b96a83ff2b53ee9699b18efffdf879602a00000000000000000000000000000000157885a39334664681d8425bd60e9c1d12dd1ef45b9a3c40956df105cd3534ff9378203755119ed302a54adba9e5858d0000000000000000000000000000000008237a9ffe95f89a24e1e3a82d8f127766e2173505a9ef0e715b1ec711619664a12d86d247e530049ee542ee4d20cc70,,,invalid input parameters, G1 point is not in the expected subgroup -00000000000000000000000000000000077dfb9ac791b3471c6cbcb0b37b65adb0bc4e40341b85c13867bfdaf32365ddfb749ebfd965abfa22996773eab505540000000000000000000000000000000015e771a0f0149cfad7910a4a1971b39323948bc7530936db5d99a53b51bd656bdce093cc2b91ebad0f91a95034afa0e3000000000000000000000000000000000200775a5848ac14b5e762ae7d4b492d2dc0bd5e80ef7fc760d42ea6fb07ffd2944409052cfb773875df676a188da65b00000000000000000000000000000000140ec7de210c890e4c795eed394d32d77f6acad0a3628da2ec805d4cf2de9822b5a73f06bdbeeba0fc1068c26da675b20000000000000000000000000000000018e7877a3f27c5400b08bd2769616745e4657f6fe262f9d7b88330917f977efa463b3226f3433da95a82568d990b1fa50000000000000000000000000000000015801af4934193336cc67fe8f4be5d2093909006f8bdd3382d60fd5c6bce4b86071370eefbce7a04dbcfb825858f90eb00000000000000000000000000000000077dfb9ac791b3471c6cbcb0b37b65adb0bc4e40341b85c13867bfdaf32365ddfb749ebfd965abfa22996773eab505540000000000000000000000000000000015e771a0f0149cfad7910a4a1971b39323948bc7530936db5d99a53b51bd656bdce093cc2b91ebad0f91a95034afa0e30000000000000000000000000000000017bbbfef68883fbf6fa9cdcef37ef145d7fbe9532164530e9c08d196ee41f38784b257087ad53f4939426451fb5f955c0000000000000000000000000000000018bb97090375c21600b6d3ee0629cff78116aa59d7b665c08590add8cdff8247c38b588a25e0b11eee5111c63f8c619e000000000000000000000000000000000e181f7327776df8ec16258115303029c68e1b72fcad6395c6d7d477368e1697076333a2102447a225fb3f3d725b3b0b000000000000000000000000000000000291d82b95e9a2c3f766994c304dae7f19f1efc789f68c4e58eda102da36cd0d7eec3d5a1b1e88c63462c8ec0e4393a4,,,invalid input parameters, G2 point is not in the expected subgroup -00000000000000000000000000000000121a9b867c86195dc4aee07081c1ad62f066b471bb5a14f296943b263fb9a25e6805e3171624e7e7e45b78f175a1861300000000000000000000000000000000071e1c35979d6f43170e79c0db5cceccff01f17cc2980b771a6cc38e0b27438a9db8e00eb943142d992c6a395fe4aacc000000000000000000000000000000001819d13cf4522a9362bbeb0bbbb0a498c3f34da1c9e3b2c54d08f7c8acd9ee756983fe80405579effb79d673407390ef000000000000000000000000000000000f870e5978f4a6e3b655fb2a05541ac0673e7b10136adaf28be4dfc9022d4cc8a60e17d125dfe53fbe10c644ff37e02a0000000000000000000000000000000010207ef774cddd10db2bca0a051ceb12900c407ee265dea4615553c193d7475b5ba3198b7e0160740e4fd015dca33e1d0000000000000000000000000000000017937be546e06fd2eab4c969a029534c02fb770646d43edeb5e6c8bc0c2b5f35576c375bf860fd1087ce099d4377d24e0000000000000000000000000000000001a8b8cdcd160565a1df9cb5ccb06a62fbaf32b2cac4ec9a552773313c940688638775983815cb246d4eaafe91c3451100000000000000000000000000000000082a1237c161831a37589ff711f7873d5e092d8a4690b983c9ccbbf980422ed177a3ebbd4b4ae4b557bcb3ae532f1823000000000000000000000000000000001819d13cf4522a9362bbeb0bbbb0a498c3f34da1c9e3b2c54d08f7c8acd9ee756983fe80405579effb79d673407390ef000000000000000000000000000000000f870e5978f4a6e3b655fb2a05541ac0673e7b10136adaf28be4dfc9022d4cc8a60e17d125dfe53fbe10c644ff37e02a0000000000000000000000000000000010207ef774cddd10db2bca0a051ceb12900c407ee265dea4615553c193d7475b5ba3198b7e0160740e4fd015dca33e1d0000000000000000000000000000000017937be546e06fd2eab4c969a029534c02fb770646d43edeb5e6c8bc0c2b5f35576c375bf860fd1087ce099d4377d24e,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000000a86f90fcd9b63a0cd5f53356c170699d78d03f180d59c38ff770560bda30bf412fdcf236b6720d94684ef1aab97bafc00000000000000000000000000000000030bcbb272ab20a2f27d45295875e3c29a8ad088bb8173feb6f6f4d2c81bbc91d673c23239e36bdafada8c7d50b54b440000000000000000000000000000000011e01c96294c726ed3ef22a5c6597d8202604c4fb14058bf44fa64ae6d342f6f77f151c8ecd99f793e79f0ad29c309f40000000000000000000000000000000000e186664d8c2a2e136ff1be2192573b94c083bf242b2c01c984a792e43a11a10599481a9a79f6a8d5b074bc16019725000000000000000000000000000000000fc48ade56f841489c4824411130fb5b7e0e83b613fa09099f318cef207ce035d5d6e7ecff5057c15ee764ec8a7fa20300000000000000000000000000000000003f1b261043887af57fab48b505ed7aa44132457d71a390646b70fcd073e677a7e275a89dd0a2bf32beae3b2bcbd6e9000000000000000000000000000000000a86f90fcd9b63a0cd5f53356c170699d78d03f180d59c38ff770560bda30bf412fdcf236b6720d94684ef1aab97bafc00000000000000000000000000000000030bcbb272ab20a2f27d45295875e3c29a8ad088bb8173feb6f6f4d2c81bbc91d673c23239e36bdafada8c7d50b54b44000000000000000000000000000000000781404020a416e2596ab361e02674e25cfb365420d35d5db7146f563a7675a942383da44ae4df49c45b38e371c82a2a0000000000000000000000000000000010c546bda090a13ccf0fec03bdcb87b41f5aed3b4e6740690afb9dadc57d773aae2d22a2d8323336c5b1dc5798725495000000000000000000000000000000000bea6aaaadbbe8102212279f1458c461d3a0d54e341c91b5e16e0ce5ba1517a13cd1d43e1d0b25a63b7cc57ece5369f3000000000000000000000000000000000b0b676e5cc2f6ac383f5dd42d379c552579f601de0cf4f34ac637383a31e393df40f5c0f95b5a8f57cd6fa4de01caeb,,,invalid input parameters, G2 point is not in the expected subgroup -0000000000000000000000000000000014372fb746da15863e9ee4e06099c7e513bdbe53ca772a4b61c81eaa7f841399422f7902893d5ee7f7d59d530e3674b10000000000000000000000000000000006ba991efa65ef8dfac8b07915cab83b5267babba1291e4662a81fdcb455faf33596f6730b6f5b3eac2076054a4ccf6600000000000000000000000000000000042ee88071289a2adeb69cbab5a3ac8c7935576bc434062091cdf1cada4b67a2501c179b5980b53256f623840a5aee5700000000000000000000000000000000063b0819dd470047a704f20f5f7c65ea0899f25603dfc7e8b8d5f0d0d323180aa921e43d63b45acc8fe9054326a8d9bb000000000000000000000000000000000615e2e5b0389017cd3ce7c15740caf3b897fbe4a59c68247c3c4229bf661257f56bcc10f55fc722f96424f5617d259700000000000000000000000000000000166f7cadf7cb9ac5a8cfa83fe4aaac0e32fd4de3e38e0d39e010d50f5b3d383243d6870505f2a285b7c5f6fc1b13f0f0000000000000000000000000000000000d1ed017ef4702bcd3bfbbcff36000af6a1d26ab363e68ea5629027e0b90352bf1d8e03c13a7955da6c15507cc1c9f47000000000000000000000000000000000e09830e54fe9eddd416479a1740f6f1b7693f2d153d322f27779b16bb6451d7657df85a55da75a4aee0a2e33b3a46e600000000000000000000000000000000042ee88071289a2adeb69cbab5a3ac8c7935576bc434062091cdf1cada4b67a2501c179b5980b53256f623840a5aee5700000000000000000000000000000000063b0819dd470047a704f20f5f7c65ea0899f25603dfc7e8b8d5f0d0d323180aa921e43d63b45acc8fe9054326a8d9bb000000000000000000000000000000000615e2e5b0389017cd3ce7c15740caf3b897fbe4a59c68247c3c4229bf661257f56bcc10f55fc722f96424f5617d259700000000000000000000000000000000166f7cadf7cb9ac5a8cfa83fe4aaac0e32fd4de3e38e0d39e010d50f5b3d383243d6870505f2a285b7c5f6fc1b13f0f0,,,invalid input parameters, G1 point is not in the expected subgroup -0000000000000000000000000000000009f0c6f9fac38e8c83183499b8918a1ffbc52f2400882edb66594f496ff38ffec77368f28e4f20767257e200f48255700000000000000000000000000000000002a05bfde9523ac13ba3518cd5b308c4985484f996e7192140d681d9934d501111a81445031d84d4a47a9727202c07620000000000000000000000000000000003004acd2a95d932b84233e80bebb9fd92b302809725d5ca0921a5d8983950ff521d89bcc2d1bc1e7c186c702bf7aa270000000000000000000000000000000011744ffc7092744a79e345be8b51569c5df8eb10b4e49957ade8df4ee4ede566b3825eec89027d70d188ff858a8b6cf4000000000000000000000000000000000e46cd26b21a8a933eac05ed526a2b8fe195e5a5435e79c7f385fb69a90190acd06e25e9b63af7862616c79add032597000000000000000000000000000000000ad60c22b3690c78c23682ba902a18e708e88430a55a9038975a43b4606ef4c6e2b8e648a25097b3a34bf6e4024d00280000000000000000000000000000000009f0c6f9fac38e8c83183499b8918a1ffbc52f2400882edb66594f496ff38ffec77368f28e4f20767257e200f48255700000000000000000000000000000000002a05bfde9523ac13ba3518cd5b308c4985484f996e7192140d681d9934d501111a81445031d84d4a47a9727202c07620000000000000000000000000000000007d87d13752c52bf0510cee94274f6f4a6e0675de9a4a864ba5058dd8771b6c5000e957cfca5279e64f09c21111322ec0000000000000000000000000000000007999819b5b57104c9432a9d4dc6ad377f0c6f0dd630155fc489aed1f8d18ce0386222813726cb786635778b74967bce0000000000000000000000000000000016b66e0ebcbf6043f6a7fe52bf527a9b763cd68d901933068966e6dbb9817e1287ebc2de9c3729df8b4228a4f92d9732000000000000000000000000000000000ee19b863d5ce19afce76e489e122948597ac6a5ee07e2d856a49377285ac93d6674cc5429e02bbd051d4edf7988ba89,,,invalid input parameters, G2 point is not in the expected subgroup -000000000000000000000000000000001269c2717ba196d5004865af806d4a99b8c238583db14f9c02da70b0275cf35a3a5276eec0c8e6934f11e0d5cc8b7c9f0000000000000000000000000000000017971814f15aaf3f6672b3a720cf6726aa042dbd82ac508a8f7ac5ddf17f377891199ba2fd01d990868347d45e3b37ae0000000000000000000000000000000001587e32753adc85c98cf1322115772b0e282ef4e6a75944fc86091e81aad076508e3d727f4df0e30924fff6b67c312e000000000000000000000000000000000ae96d3a1b79985e56f80df8ac4d9792229ca580b156dbbe71a9db470447fa4dfa19fc8a8a2e2f0fae28a24b7d6153d100000000000000000000000000000000114101ad0d29ddfd2fc436d2a270711c444c8c257785f4b4c549e9c795f6dd9834d3744995d2188c0c968752a7f68892000000000000000000000000000000000d30d9cc1e2273af745dd47a596a2202ca4fb655f9f9beeb0a87631e2461f29206163fd921761fde69654cb02e23505c0000000000000000000000000000000010cda048fed479f7bcd388a0acaa977b134055f5ea92b2a689793e301d58190c67031920ccf1cd97ecf9f429f5a022e00000000000000000000000000000000014c410faae20d54049aa7c644ec1ef0388367ac847f6781e62ec88eb9262ffff5f19cf5f4ebe791a44ad9a84fd78aca70000000000000000000000000000000001587e32753adc85c98cf1322115772b0e282ef4e6a75944fc86091e81aad076508e3d727f4df0e30924fff6b67c312e000000000000000000000000000000000ae96d3a1b79985e56f80df8ac4d9792229ca580b156dbbe71a9db470447fa4dfa19fc8a8a2e2f0fae28a24b7d6153d100000000000000000000000000000000114101ad0d29ddfd2fc436d2a270711c444c8c257785f4b4c549e9c795f6dd9834d3744995d2188c0c968752a7f68892000000000000000000000000000000000d30d9cc1e2273af745dd47a596a2202ca4fb655f9f9beeb0a87631e2461f29206163fd921761fde69654cb02e23505c,,,invalid input parameters, G1 point is not in the expected subgroup -000000000000000000000000000000001252aaecb588ffcdee3e4fd92ff5164feaf9aa39acbc71c704d8180611d30fe13e59bba805101dc1cecf77b254bc65510000000000000000000000000000000009dc3de2e8aa94dbcc25c8775e9bd0ae0fa8581df790e562e67f24c08efaab59a0a8062478a09c262040c5f0558971c3000000000000000000000000000000000b0a6f9e0b58db3015e1dc63f9d377895d25f48e8a05371ad90c3ef5f3085a76b888d38693eefdf3b1eedf80eab1736200000000000000000000000000000000006dfb36e1c281cf1c5a8be9a631cab94aa956bacf8e9e787c0e2bab4440f03f0efc56d5a058fde2e18696c569676d3b00000000000000000000000000000000118791bba7507725b7106bc889b68c3daa56dc3100d8378cf156268f249dbafd01025cb722d58246c95ac856dd5d0411000000000000000000000000000000000f942ab8fd1e71f6d4498403116ef41954e7967222f894b93ae31f061cafaa1ed3464520dc5123aad4b0a352a85efbf8000000000000000000000000000000001252aaecb588ffcdee3e4fd92ff5164feaf9aa39acbc71c704d8180611d30fe13e59bba805101dc1cecf77b254bc65510000000000000000000000000000000009dc3de2e8aa94dbcc25c8775e9bd0ae0fa8581df790e562e67f24c08efaab59a0a8062478a09c262040c5f0558971c3000000000000000000000000000000000c13d99118e4946773d0ae54a37895411e39ba0de604c5f69d0b3ddcd50c4261c38c510bc1e018dbdf449e303e398d820000000000000000000000000000000018427393a7ed2dee713e83e58a6537c5c6baeb69ceac3b574e02af78215d99b8cd01f0c944d075300d35176099b0aa8100000000000000000000000000000000140ab2527b79327e07344a673e688debec28aa29219a5b1646a3c2b599a9d374cf5e139ab00aa237bb8e29d021d766ea0000000000000000000000000000000017164f154d26566ecc983d38d77d694208864c024c3ffc69f19f84550e86eddd8dbb055a8cf543717ce3d65e1c64c53a,,,invalid input parameters, G2 point is not in the expected subgroup +000000000000000000000000000000000ded5634c6bab9610e70f3a9be2bb39c51f2ddd762d22d6c3f0961af19350c4ca4bae333bf4cf586d8cd1e0a0a6c674e0000000000000000000000000000000012309fe1d843245e2cb58d419ff06ed8e93ec901c01d0c5be453e11d10f930afa0c35428ef0c8dc13ce99c990af166630000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1d9f0000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a400000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1d9f0000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,,invalid point: subgroup check failed +0000000000000000000000000000000014881e90a100e5c1e07588d68c69b9b217d2c57b2bd8782ea7579abfac3a38275677a8dee7e689c1b185712ea38bf0ba00000000000000000000000000000000061e48ceb68db1cb84ed39f9772f937922198b47082d7517c8258e46a490fc20e4e01971711853ab653d064f8adc79e200000000000000000000000000000000173518c27d76414f3027ed3e4936ad1b6aaebf0a98462df3e3a55aa38e19fb121acc6eeadb7689c84fec18580b63784c0000000000000000000000000000000007c116829ccc1d5505dcce029f5c8b7c8a9cbc9dd562a874766a5654483aec977a0fb9e611f9471d2f0c91fd6534892f000000000000000000000000000000001560b267e66200e69d6298250456d88500a0d79ea69870358a6cb39609fb6596e539b28bfea9d1c7054b5b51a4c0f3950000000000000000000000000000000000cc196f93e5a2dd3a41a1ba23fd2e53bf376c910117e9216663e30091b96c897080bca189ce3107720dac1c54dc4fc70000000000000000000000000000000014881e90a100e5c1e07588d68c69b9b217d2c57b2bd8782ea7579abfac3a38275677a8dee7e689c1b185712ea38bf0ba00000000000000000000000000000000061e48ceb68db1cb84ed39f9772f937922198b47082d7517c8258e46a490fc20e4e01971711853ab653d064f8adc79e20000000000000000000000000000000015237996817e97b29ef5b4ee49e6aea7129bdc4a46707f99df3ab8af36eb4123e93496d94846f7807b3bd2c87d3ca039000000000000000000000000000000000df666f7728483689a746e5b39f4848a9f2d831cb17d4e5f7fb67de5d497f6399de5f37ba9e6ab76937e26450000d600000000000000000000000000000000000e4ffecf86b371ddc9ee6a72b5ada74790b590acc51c6c5c479c43c532a9507b4b4909bdc901b00932371a109fd38b7e000000000000000000000000000000000354f92ccabccc9390072671ccc8d3ea0a0c44f85816f20bd6e8b485e648e8ba0d5b845a8835395ce65b8101015ea83f,,,invalid point: subgroup check failed +00000000000000000000000000000000199fa649608972d295befae38d36940663d2b67bb286a3d549c75deef39ef8068728bbba2cafac44c102499601e4bd860000000000000000000000000000000002dac960f96822774a4956fc0ba97a235d0a2c10d81d9adf7b88215250c934b68c3de07a97adcaee2aaad0d3d84ecf6800000000000000000000000000000000000eb3c91515d4a41209a73564741a8ccf901a624df9db22e195a5d02d24b7bc0a12756b15b8d006cb991a7e088eaef1000000000000000000000000000000000704ce8afc808b0161f6f61b22d990d713ae398779e6e74e9b5771daf006ce0bba3a8088edf75156f0e48b92ee8409b00000000000000000000000000000000018fe81e05aff0620f4bdbe4a715e015650497afab62921eba0ab86b649e5a2fd3d54041868928519f537e36448688a0d00000000000000000000000000000000162bd97161201ea3c26f8dd1204a9c6b61b762bdf573cb5d20b6b255f30208ca7d96aa47b46fb8c6bf0922075f1c1ca8000000000000000000000000000000000d5bb4fa8b494c0adf4b695477d4a05f0ce48f7f971ef53952f685e9fb69dc8db1603e4a58292ddab7129bb5911d6cea0000000000000000000000000000000004a568c556641f0e0a2f44124b77ba70e4e560d7e030f1a21eff41eeec0d3c437b43488c535cdabf19a70acc777bacca00000000000000000000000000000000000eb3c91515d4a41209a73564741a8ccf901a624df9db22e195a5d02d24b7bc0a12756b15b8d006cb991a7e088eaef1000000000000000000000000000000000704ce8afc808b0161f6f61b22d990d713ae398779e6e74e9b5771daf006ce0bba3a8088edf75156f0e48b92ee8409b00000000000000000000000000000000018fe81e05aff0620f4bdbe4a715e015650497afab62921eba0ab86b649e5a2fd3d54041868928519f537e36448688a0d00000000000000000000000000000000162bd97161201ea3c26f8dd1204a9c6b61b762bdf573cb5d20b6b255f30208ca7d96aa47b46fb8c6bf0922075f1c1ca8,,,invalid point: subgroup check failed +0000000000000000000000000000000009d928f478fea86b1e3c1ebf59b230af42e4a539dd43ff17b9ca250605401273edc42806bf2cb887c6093729238fc0560000000000000000000000000000000005b6040ce6d0802719af5b9c0fe48366c5a97bcad2c6ec25f64cd73f39dc73a22d0084c69f2e86637c584d2de55d6064000000000000000000000000000000000aaeceb367eaf2ab8afb5070b5f5611f19fed17e16f6b01cd20f5f1a7e550d4689c89d6490878877c46492e8fbc9db600000000000000000000000000000000019dc59fbefa7abf12f1aa92e420f52595a06e819e974c07b62a3ae459c62545922016abd8e91301aca8f48ed793b91af0000000000000000000000000000000012f5352825a95ff0a0f0948b150e5eb1ab53d6591dc54ca8b37941fa94a0fa68af8c35aaa26c73951d2dd52e9c7a55bf000000000000000000000000000000000531e610f3706a1c67b31909a97232acef0e23c35c657dc82d9508fcf33bfff777386dc8265accb52d0da207957d25160000000000000000000000000000000009d928f478fea86b1e3c1ebf59b230af42e4a539dd43ff17b9ca250605401273edc42806bf2cb887c6093729238fc0560000000000000000000000000000000005b6040ce6d0802719af5b9c0fe48366c5a97bcad2c6ec25f64cd73f39dc73a22d0084c69f2e86637c584d2de55d6064000000000000000000000000000000000cf95f6bc3f14cc8a657da35f212d55d3633ca0d224794ac1e49cbf1e1db7757dac2bb08880f7b13f2ac0c2b95ff483c00000000000000000000000000000000115bf27014a31726503f0665301f9e183de41e002db568916aaaeaa4c8046475860db3b993b2ac2af58b12614f0b9f2d000000000000000000000000000000000983ee62076e9c5f8e6ac3ba8e5f98823a37ff20432f0b4e7d9e008660965f551bb5538e6ba28541ad514e87d128da1b0000000000000000000000000000000019c9930e3e009986608463c80aa0049fcac5e897474e519b52c80960f1dada5a48332d810f1f9a34ee479383b5b556b3,,,invalid point: subgroup check failed +000000000000000000000000000000000f240a4daf7acbe8f4c5a9cb40ccc6d99dd712b8dae4c13e9d3839b0c88c5eef6f050144a4b731267e2132a81b1a635c000000000000000000000000000000001931c93a957ba9005fa69004c7e984b9dc86f45ec03eeed77addb3e1bee3c2424105df8e8faacae2b07623cd3cc7261e000000000000000000000000000000000805892f21889cab3cfe62226eaff6a8d3586d4396692b379efc7e90b0eaad4c9afbdf0f56b30f0c07ae0bc4013343b30000000000000000000000000000000007853f0e75c8dee034c2444299da58c98f22de367a90550dbc635fb52c9a8f61ccc100f70f10208944e48d09507fdce100000000000000000000000000000000064afd6b3ef7ff7ec34f1fa330877b42958a46a7698c6d21adf73bfdfcab7793b312e21e5988652e655f2d42edb8a673000000000000000000000000000000000ea8a2217c3dbcc0f6e562de9cb2f334c896577d0b3a7108d96b1aba2d705dbf531e870d4023cec2c0533455013242330000000000000000000000000000000019c822a4d44ac22f6fbaef356c37ceff93c1d6933e8c8f3b55784cfe62e5705930be48607c3f7a4a2ca146945cad6242000000000000000000000000000000000353d6521a17474856ad69582ce225f27d60f5a8319bea8cefded2c3f6b862d76fe633c77ed8ccdf99d2b10430253fc8000000000000000000000000000000000805892f21889cab3cfe62226eaff6a8d3586d4396692b379efc7e90b0eaad4c9afbdf0f56b30f0c07ae0bc4013343b30000000000000000000000000000000007853f0e75c8dee034c2444299da58c98f22de367a90550dbc635fb52c9a8f61ccc100f70f10208944e48d09507fdce100000000000000000000000000000000064afd6b3ef7ff7ec34f1fa330877b42958a46a7698c6d21adf73bfdfcab7793b312e21e5988652e655f2d42edb8a673000000000000000000000000000000000ea8a2217c3dbcc0f6e562de9cb2f334c896577d0b3a7108d96b1aba2d705dbf531e870d4023cec2c053345501324233,,,invalid point: subgroup check failed +0000000000000000000000000000000012d75b62dd32798ea12b99f51a496bbf61bca93cd233dd288e00259893dbe7c73b6342860d41fd86878a6de608dba0ed00000000000000000000000000000000018e963e1cdb31ce3f636091952c17ab4c03c0f55940196b5772002850c6c86a3da13a9a5fbfaa8256fb0a9c4139bfc60000000000000000000000000000000018330d288ddc1786744f95c4b3bacbdfd10ab560fc283c1ecde1bcbdc53cb284198f340241242763c77b4cd3b8c729200000000000000000000000000000000019a3d86d9b3ff0b03da1686c3234bb2b8109ab12ffd7599ef9e3489fcee40e50036dd952f7a4129473340fb725458cc50000000000000000000000000000000010f70de44c7e0510c8ff8327dd83ea4087f9f8b5a53fbe18615fa31a3b57862b52a7726b3e9403afe93dcafc5606dfe500000000000000000000000000000000199e6da569d0eb7938d52b396c9bc6d8b563dd6e64edd60e2e25c493475a0cbd953e7ff54309d189eba2b3827ad614180000000000000000000000000000000012d75b62dd32798ea12b99f51a496bbf61bca93cd233dd288e00259893dbe7c73b6342860d41fd86878a6de608dba0ed00000000000000000000000000000000018e963e1cdb31ce3f636091952c17ab4c03c0f55940196b5772002850c6c86a3da13a9a5fbfaa8256fb0a9c4139bfc600000000000000000000000000000000192b17cf1539a57ee64701bcd07ed0b067a6ab12ef17408ad3ba1db0d94889cc481c877588fd70270287aa8f279659af000000000000000000000000000000001779c74b7e83c8d931510b555de206dee2d9edbb49b473c586c5b7046d1389e6f612cf96ee76446a21b02f135492fa1c0000000000000000000000000000000007165050fd4407a69143a98001c290f8b1aef02d64d28ee046744009f4afa376da95b4f6a3dd36427a297ed25e6bb3320000000000000000000000000000000005a9238272385614f6df896801f7f9af9cda1ac0ce3c816174693bd52b1799386c4f6355fc36f9ecd566a3a4b20e612b,,,invalid point: subgroup check failed +000000000000000000000000000000000d612430d9b8956188fefa4cd839ec8dffee18678f83d4984b08e227880ec127e63860bf5d7a27c309fb425b90c0afa500000000000000000000000000000000100556e6391ac2a05b15e552e67d6509e21c4770cfe2f8126fd1d9663995839420a4915656d6292d0767892833369bbc000000000000000000000000000000000aeb5c087644595d0912879f61959d2731ff55260c682ed2bc5fc55c13964ef7c1f70aeb55876d2264d558c31371ca69000000000000000000000000000000000e173848f4570525b03a2b2c86f4dcdb8b28dd6d18c1354cad31028eb1b8b44432c2346edaace093e3954c7fa6d338a4000000000000000000000000000000001949b0902506d111ef6318edcd7a58ca4d69f5804a028aee73c3786cb2db168c6a73b77194f7a021ae6ae43ac78ade340000000000000000000000000000000017c5e28ba6103d97e2f3d3611c0c78f06406e0da8a49ae29c7d460b52f75136920784cd500aa3593858b877697eb84240000000000000000000000000000000007dc719ae9e3f1e11d3ed4747a546a7b973ccb1967adb1b3066645a8bde9632bcfa3530e768f088ddbc022b169e67cbf000000000000000000000000000000000bbf9cf884b19c84045da1cead7dcd9fdbf39d764ff1ad60d83ed1e4fd0ce0554f0fb618203952cf02a7c4ba466c66b8000000000000000000000000000000000aeb5c087644595d0912879f61959d2731ff55260c682ed2bc5fc55c13964ef7c1f70aeb55876d2264d558c31371ca69000000000000000000000000000000000e173848f4570525b03a2b2c86f4dcdb8b28dd6d18c1354cad31028eb1b8b44432c2346edaace093e3954c7fa6d338a4000000000000000000000000000000001949b0902506d111ef6318edcd7a58ca4d69f5804a028aee73c3786cb2db168c6a73b77194f7a021ae6ae43ac78ade340000000000000000000000000000000017c5e28ba6103d97e2f3d3611c0c78f06406e0da8a49ae29c7d460b52f75136920784cd500aa3593858b877697eb8424,,,invalid point: subgroup check failed +0000000000000000000000000000000013b23b5a61ad3ed0ed74a57023285338c77c01dd93e17fd93d4225d27a7168dbdae3fff0c8ebcfc30887df348deea7ae000000000000000000000000000000001245282782135d41eee4dbd9b69a586e1ae2e17426643494427eabec93ba3c056089ce9c8a667727c3464178f7c87655000000000000000000000000000000000d35887ecdfce840b79f60f77af0e7cc01289ff20e1558a14b57a73f3fdd8e66ca496a73ce888d1c8cd0888d8219412b000000000000000000000000000000000cca9ce1b3c5bb6d02d5c36549438a4854dacacab7b173b434d09e496256edc2372a08edb2de26e5369af03dd0e2d73e00000000000000000000000000000000152d022429b54ac4bb70dacc888a2a3409cd7d2db0614ba0afe236c7bff311967718a70eb7943f93a6dbc88d3c008e8b00000000000000000000000000000000191e99ff1e02809121098597de4d176dfc85586d3e13609b3399c08da7c9cd6fa006e8b95551878a74e140cf166625c30000000000000000000000000000000013b23b5a61ad3ed0ed74a57023285338c77c01dd93e17fd93d4225d27a7168dbdae3fff0c8ebcfc30887df348deea7ae000000000000000000000000000000001245282782135d41eee4dbd9b69a586e1ae2e17426643494427eabec93ba3c056089ce9c8a667727c3464178f7c8765500000000000000000000000000000000179657b434fbb3ecb4857b4559c8cdaa1448b2a4bf4314349341a45bd3a2cdeb2aa6be75ee1aaaef0f90d086df55ccc40000000000000000000000000000000011ec9abd1a497dc7cc4b4b9e2cef8a7abc767969703d79ff51d7a4f1ab93ae9fc7e8bd4852da22ec067d326fffa54757000000000000000000000000000000000a45435d1f78ad93aeef8a88dad39aebc0cf38cc16fbb02c571a269bbec773e71b5ee9d09a505afc9a7fe11b06f040cd0000000000000000000000000000000000b6ee9d2b0fbd996455169ef07afa3be3c6535d65545c8503c3d77dd0576eecd2f81b50dabbb62328edfe236981d5c1,,,invalid point: subgroup check failed +000000000000000000000000000000000b14b12ecaa94f9656be54772be9b22a2495d4ff873b0bb971c27ab1d8b940c84cabcf921f6f75e93942c38cddeb8751000000000000000000000000000000000c9ad793ae80ad0e1c39670876d679bc7f930c1df1f9202593d1901079687b77f18e4b1536bd7c4152ec197321dc945a0000000000000000000000000000000006a90568fa25b401756e3f86b5300c4d3b626dc6274f4685e8a9f56ec5ca2afce36a1fdc6d3414edc8780c4e650f10dc0000000000000000000000000000000012e41e8e0dd10b3ee31fa866753aa5d9db7669153b141114cdb2ef7fa6df5db27aef0cc70e76a741eae504b038ecf2300000000000000000000000000000000005c35f3372f1ec9845bd04ea722fbed2be1388abf59e622dd3dafb4b3af49bc5fba9e20235e7e58973fedf4b8b720691000000000000000000000000000000001111d18d621070509805d306a31c109701288fd55d4c0644349deb080c6591b6e852b4f7e009b80019513de7f2fce17d00000000000000000000000000000000000707c711f77bb425cddc71ecf96a18b6eb0bed7f012c4f6cc9431003f2e1ac17f7c1f68c4965a4fcc273a3db93451d000000000000000000000000000000001211464c91c7e78b00fe156da874407e4eeb7f422dbd698effb9a83357bf226d3f189f2db541eb17db3ed555084e91ec0000000000000000000000000000000006a90568fa25b401756e3f86b5300c4d3b626dc6274f4685e8a9f56ec5ca2afce36a1fdc6d3414edc8780c4e650f10dc0000000000000000000000000000000012e41e8e0dd10b3ee31fa866753aa5d9db7669153b141114cdb2ef7fa6df5db27aef0cc70e76a741eae504b038ecf2300000000000000000000000000000000005c35f3372f1ec9845bd04ea722fbed2be1388abf59e622dd3dafb4b3af49bc5fba9e20235e7e58973fedf4b8b720691000000000000000000000000000000001111d18d621070509805d306a31c109701288fd55d4c0644349deb080c6591b6e852b4f7e009b80019513de7f2fce17d,,,invalid point: subgroup check failed +000000000000000000000000000000000e96f4879493d577aa02e9793aba3c680de9296dadef569d70484297398cca1e3d8acadc6c188345d98d5208f5b2d7800000000000000000000000000000000003bee60fe5a42f31ae4218a6c6fff2ffb51329c86f8d3c381fb090bba0274eef8cf0d351fb4bbe2d51e25d9f7b2094ee000000000000000000000000000000001664847d2bfb8939cccda0bc7b7ef02fcc1188fcade83341db7c4dfdd4a1a3bdd627379544dd405bcdb58caf4be39cb40000000000000000000000000000000001a293caf801299370cd133fd54d2086c6d1aa96ec32a1c9c57679f45785c9e6fa91018720c2d0515b38790914ab61d20000000000000000000000000000000017efcbccb71f6bbfa515e89d59b5fcdda4bf37c90fc6dafe9c6b0fe3d42a372ad9c66e5d60e04eff30ea7c1952f3fed30000000000000000000000000000000018893c6a3c621ba6c1119529a07d6c2f9c1d4bee5e0090c4c0204d8d4f3e200ab3300dcdf1cfe61370d68849806ddd8e000000000000000000000000000000000e96f4879493d577aa02e9793aba3c680de9296dadef569d70484297398cca1e3d8acadc6c188345d98d5208f5b2d7800000000000000000000000000000000003bee60fe5a42f31ae4218a6c6fff2ffb51329c86f8d3c381fb090bba0274eef8cf0d351fb4bbe2d51e25d9f7b2094ee00000000000000000000000000000000060a0cdf9ea84b21c7399b21e337dab42f357c30f50b076b4f95bf8623b88e557cc8b346e41a996adbfbaf0a3697ae8e00000000000000000000000000000000003746a481d5760263d43ee3c2ed6493caddcc59754fb8534ff57ff9bf167f356d901277b9935210ddac4dfff8f21161000000000000000000000000000000000d80e40583153e6e0adf9f95ebc4fd501f5aa426ff77038b69f0fe8259268f9224628ead1a63b7ecb4218ba825ee45b60000000000000000000000000000000005d0421b213f88469887d67c68316a98c18d2035a601dec994f6a4b91fb6c3b7e5ac7741cd07c956908869e1023dd32d,,,invalid point: subgroup check failed +000000000000000000000000000000001576c6f620bbe36a7df78985dbffd355c032bb667f4757501bb27a426c99e1949a1bc65afebaeac0668ff3d375b7837d000000000000000000000000000000001651783a82f2a8e1e389923bfb53836492c00e447b288873071bd8682a0ef30864f4d0fc9a626bf701bdfe1a48f4479f000000000000000000000000000000001335276775545fbb4c701beb57cb34312108c9f1d46b4aa4b09a16faf0e648b4e80848bf5e75ed8730715f0107afc9820000000000000000000000000000000006ffff8736bab41b4ee5681b741a81fc870e648001027161144254d04c678e4f954e9f191bd8b26201aec681cbf0654b00000000000000000000000000000000026ede90d14fa0885baad21f9631bae058573251cbef5757bb8cfad061f3bdc78834fa5862dea19a2236c014b0f1652e0000000000000000000000000000000009844d0cf7f6f3401145d8d720defa577ca46b49e04e39c4c139ec6811a574e7dd5ce3acd00d1ce9496f10dd15c6d946000000000000000000000000000000000a6ff5f01a97c0f3c89ac0a460861dc9040f00693bfae22d81ea9a46b6c570436f0688ed0deef5cdcc5e2142f195b5c000000000000000000000000000000000193a17880edffe5b2ebedf0dc25e479cac3b136db9b6b24009ea0a9ca526d6dd9714d10d64c999d4334baa081b9f2fbe000000000000000000000000000000001335276775545fbb4c701beb57cb34312108c9f1d46b4aa4b09a16faf0e648b4e80848bf5e75ed8730715f0107afc9820000000000000000000000000000000006ffff8736bab41b4ee5681b741a81fc870e648001027161144254d04c678e4f954e9f191bd8b26201aec681cbf0654b00000000000000000000000000000000026ede90d14fa0885baad21f9631bae058573251cbef5757bb8cfad061f3bdc78834fa5862dea19a2236c014b0f1652e0000000000000000000000000000000009844d0cf7f6f3401145d8d720defa577ca46b49e04e39c4c139ec6811a574e7dd5ce3acd00d1ce9496f10dd15c6d946,,,invalid point: subgroup check failed +0000000000000000000000000000000016e8fb30c523be94fed64c81cefcbed03d7a2c85ce975601a441a920d70980be8b7c682ebf2aa3cc36ad1bf2d98a711e00000000000000000000000000000000056d7a36324b92ce3bf1644a2a0f6e717b0e9d94e9e5231f0c999c0f6eac936f5c1b1ff4aef04b821454a951882fd45000000000000000000000000000000000069ce7ace071ac2f7034200da8eb9252c55cbb50a591c563684013fa8071d7289a44ce5b100db6af1e8732b8e5b3b7fb0000000000000000000000000000000019535c703e9dec227c92db508c5c0553b986b93e3a90b35f472ad8e5b217bc7658ceb7ea452b76984d3d17859fbd7fc300000000000000000000000000000000008b3677ecfb10faae0478be5be5c72fcd7137042b5972fffbd15ac95d6104687a81fa3db232edbbb8703280412eddd30000000000000000000000000000000012a628e23e5c7f0225eaa75b6c9199d1d3a0316d474d1fa729640c295ec156ce3bd49f193d993165b9a69ad6cb2ed75c0000000000000000000000000000000016e8fb30c523be94fed64c81cefcbed03d7a2c85ce975601a441a920d70980be8b7c682ebf2aa3cc36ad1bf2d98a711e00000000000000000000000000000000056d7a36324b92ce3bf1644a2a0f6e717b0e9d94e9e5231f0c999c0f6eac936f5c1b1ff4aef04b821454a951882fd4500000000000000000000000000000000005b6ff8cf47cdedab38d984013db8401fa4783e7c8e78160c7a420de86636683b8dc292e1f0494dba5865f217e33e7c40000000000000000000000000000000008287d216fc45ee3e210630f0dc4893dfbba90b3bfd34986b64b04a2ec6fea0496cb0f2910cbb99a70896e5afcf809e8000000000000000000000000000000000a1a11f1b52c35b9e061c57b7b7f5f76f4db764607c93c2dddf245170f4c6fcf5915d72130e6f8f0c0c5b29a4970aeb30000000000000000000000000000000009255413a3db5889608069b7a72879b659ee5e1e71165752a9173cf1ef749050fefb86584ce90cbd3c3aa3db023b3322,,,invalid point: subgroup check failed +00000000000000000000000000000000117e2e3a8753660374fb2b812038bfd8f15d36d26c7b07fb546610405cd4442c79166060c8b8e767ea4084a583bbbcca0000000000000000000000000000000011247def4be1da163e724a175f74afde615df1417cdc2491158fd560442e56ebbcb61f51f9712ac93131024e27a1caa90000000000000000000000000000000001cdfae9234096578b9413f926ef8c6831f2c0f700e25d7553a746aef44238e493f8032e09f67f2fed9676c9611f60e70000000000000000000000000000000019c8bae08d3926997146f7827f00cde863684dd4050ea5da64f6798e7a930d3c1f34046bea0f44232594f5469db566280000000000000000000000000000000013574b997ee8988aa81db0e2ddb98be2e7005603076fac5cb246f65c869aa7bb3f148c8dde970e34e5e5efce023e633c000000000000000000000000000000000998bc9d41c5d527360fc4e68ba067d3778cf5cf00e5959b5ec52c1595aabe6e2e92d40cb34faa84513d150568c8cfc00000000000000000000000000000000009ec00ea2da59d937d3154d86dbed2957667253401bce9de80e0ffe6df32f36b06404b9e3af08e912a0b4ef091f93efb000000000000000000000000000000000dd8d1bd66f4accbc9d0c7dabef7af72f51c67a0d61384647533ad92bba44a312f0be0fa52163176f1aff4e64c00aefb0000000000000000000000000000000001cdfae9234096578b9413f926ef8c6831f2c0f700e25d7553a746aef44238e493f8032e09f67f2fed9676c9611f60e70000000000000000000000000000000019c8bae08d3926997146f7827f00cde863684dd4050ea5da64f6798e7a930d3c1f34046bea0f44232594f5469db566280000000000000000000000000000000013574b997ee8988aa81db0e2ddb98be2e7005603076fac5cb246f65c869aa7bb3f148c8dde970e34e5e5efce023e633c000000000000000000000000000000000998bc9d41c5d527360fc4e68ba067d3778cf5cf00e5959b5ec52c1595aabe6e2e92d40cb34faa84513d150568c8cfc0,,,invalid point: subgroup check failed +0000000000000000000000000000000018de31d75ba31dc1441bee38f5fb9e9d347e0243e6c3220de664e04a0af17c776fbb483f63ebeac48c7811adc0fff6bc000000000000000000000000000000001053f5c7a65dfb41b7631a22e60337769beabd663fa76eaa1e01f0c0e3c901f40a22b34adfb13b38e298eb83f08d7b1400000000000000000000000000000000079daf601b5fdd1c00552382a819e1924a517226864aa3565d384dc399e6e124c3ad61b236e19321078eab585579572d0000000000000000000000000000000008ff51b4d60d9fb1718c5622b1a3353675ca0144e12e68875481394755107b7f3364d1320283ce34737d5ea0b7d9b40f0000000000000000000000000000000000f430d35de439bf8ef82df4dc61459cf9783d66531e8075f323dbf102035032972a4830ba6bf391b568e6b691723ea600000000000000000000000000000000042df3a5c7b534c48c9af9f48e5cb296e2e514e3322630989c3da9696485797fe2ae036e13484e26cb59b48a479d3f520000000000000000000000000000000018de31d75ba31dc1441bee38f5fb9e9d347e0243e6c3220de664e04a0af17c776fbb483f63ebeac48c7811adc0fff6bc000000000000000000000000000000001053f5c7a65dfb41b7631a22e60337769beabd663fa76eaa1e01f0c0e3c901f40a22b34adfb13b38e298eb83f08d7b1400000000000000000000000000000000180168b2c9a59a9bedcf002336a6ce5d5ff36937948f5d3aa9fc1ef1912d9fed526edcaa00b5ede76906c40994937da00000000000000000000000000000000018d47a4f6e4320a230b8a4e5f5eea7807fb5b0dccc72af182e8bb811f2470dfd485f291b8197899af84332e3674d56950000000000000000000000000000000000dbfed96298ad2f57fe7b1eff4791abdae5fd0ca3573e66270f8c9f6adcbf6e54a746789a496714f5cc06eb2b8190070000000000000000000000000000000002939de2a2f7ec3d44dc5ae679967a5d7efcf80df8a21d9708c036c602a5050487f80a39cc36c7e587f0f2610fed86b2,,,invalid point: subgroup check failed +0000000000000000000000000000000001ac9e5f4fdccfe8d2979ad5329b07b23b497c2b7f26283f8c79548387610580568bdd9dc040261d6c265aac581b4665000000000000000000000000000000000eaf31d6368bb9d762ea067eed73b008dcb4d84643471dc1d64104eaefaf500858d9a9323b7fa2ba3c22bf15e7db6b9d0000000000000000000000000000000007457f2601621a99050d8993244f026b9a62ff7055b325e6f1edd1cf54065785f003cf7c8a4bb1f7bdf14e220e490ada000000000000000000000000000000000928eb76b428dde37546a27f3d77605c293738f448fbdd6d618747b0de04004aa4419cc5601600419c6e1d470c15982e0000000000000000000000000000000008074e9f5473492dd2e536f7b305be4e5c564cfc9218934d03dde6dc5118064ebaa5c26fdd1123a9c31336c37c1234900000000000000000000000000000000002bba1f9b7da6abd2b322c8f11c749b2a284552eab25a77d21b38b028da477a3ffec1901a015e81fe2893576a41e4c0b00000000000000000000000000000000172447291285a20c3ffcdef805260f00fbd4c5d3a42ee5b17d5ec05a723aadf4c2acc49f839e222155f29d0c6384bb0a000000000000000000000000000000001490dae85f858ed057fdb61c22ebf3d45c3af02afa53f32b2542808bb4db5bb1b9603e377f0b6d214e03050379f8006c0000000000000000000000000000000007457f2601621a99050d8993244f026b9a62ff7055b325e6f1edd1cf54065785f003cf7c8a4bb1f7bdf14e220e490ada000000000000000000000000000000000928eb76b428dde37546a27f3d77605c293738f448fbdd6d618747b0de04004aa4419cc5601600419c6e1d470c15982e0000000000000000000000000000000008074e9f5473492dd2e536f7b305be4e5c564cfc9218934d03dde6dc5118064ebaa5c26fdd1123a9c31336c37c1234900000000000000000000000000000000002bba1f9b7da6abd2b322c8f11c749b2a284552eab25a77d21b38b028da477a3ffec1901a015e81fe2893576a41e4c0b,,,invalid point: subgroup check failed +000000000000000000000000000000000515390641039576df1debf767b899deed928bba057d8564e7d117b324dd7f45e38939ffa1056fea35e1df8ba38815ad000000000000000000000000000000000013af9258135a09e5710a22dc437a4efdfee1f6c25cc08fb026c7ea2accddb9446333a91a532742c7713f6639e0cc460000000000000000000000000000000017203225f7e7b55e52793698b8a1166de5cb3d130c7df6f74ae428c4f39e7d042d41eb3aed266ca8cd3be1618cfcbdf60000000000000000000000000000000016b8053ab19a08a8c23a166bfe7a89be6eed05f305525146d9ff6e03e47ba125403cb2f000672d08a2b59051242f61ea000000000000000000000000000000001136f9a9369aa3561d65e54869f36ae9d6945654ac16335aaf717e0f848463ad401a99e83b3581c79d4221f65d649e9c000000000000000000000000000000000302ecf71033b917efac49d7a22db2e5c59b656639c4d0aefdb431749718d560b7e5580b4532048a693ccc09fb8a44a6000000000000000000000000000000000515390641039576df1debf767b899deed928bba057d8564e7d117b324dd7f45e38939ffa1056fea35e1df8ba38815ad000000000000000000000000000000000013af9258135a09e5710a22dc437a4efdfee1f6c25cc08fb026c7ea2accddb9446333a91a532742c7713f6639e0cc46000000000000000000000000000000001330e5c71d9b0209c8f8c04b4a28ad70d826b2c781493ac50fe58d0d6b740de3ed08f9829aa9b207ecf623a36dc8de610000000000000000000000000000000019a81ae1c6c08004a75b8fb5426ec899a09becce68dfb63fa7335420f05075bcf42c85dfa688ae75398c3ae5e4d28d12000000000000000000000000000000001597318859306f3814d20faee54926d5e8ec01005fae8aa408989afd5a1d7add8956d8fd3e75f9e446fb8b2a31050b6b00000000000000000000000000000000151e7c5bbcaf1e9581ac48e2b9bc63bf4576ee5d938981550f00fe9e3a42d389d6b56acd0ac9254ceaa71519b5049a4c,,,invalid point: subgroup check failed +000000000000000000000000000000000a2e9dcb8461de77fffb1281df7360c947108baef671602902c3bfa4afe60e0b4810cd46bd91276cd58e33fbf4973301000000000000000000000000000000000c039ea7e94fca4a32a275691131df8e3d470d6026aa306c8ae855e9e411878247368615094621e6af5486809b467a7d00000000000000000000000000000000138ddc71e9709e595ce2631c9155069818d07f225f80511eac21c5655721df83f83e2abbf56e2d5ebc9698f9128f0579000000000000000000000000000000000080f7ae78277c94833c0f12aa2cd98285621e0d92a89b45cac848f5a75ea652e98cd085150b2d7babaa9a365123d90e000000000000000000000000000000001147cec62010d42cd84651ec61ad8263699786f0f34aa7f9de75ac841861fae2e8ce3795fde8e7038c8506f573cf0e0f00000000000000000000000000000000138ed243889db13546c69583c1aa93ee98366220ad80c590ad112adcb4b7c87fb48a34483e76d4a5c55a30f2adf1a6a6000000000000000000000000000000000077b7a4c4644b21ac3ef56db1163f7b2e07a817cfd9d4c6830a97d0ae0b620e0b235376d590162c378899ba12eadb5900000000000000000000000000000000022beafe4b4ab44434c9dabae45a395b5b8da15da2fc2e723c1b30b5efc95e880846844f27eb47dfae8657fa27ab64ef00000000000000000000000000000000138ddc71e9709e595ce2631c9155069818d07f225f80511eac21c5655721df83f83e2abbf56e2d5ebc9698f9128f0579000000000000000000000000000000000080f7ae78277c94833c0f12aa2cd98285621e0d92a89b45cac848f5a75ea652e98cd085150b2d7babaa9a365123d90e000000000000000000000000000000001147cec62010d42cd84651ec61ad8263699786f0f34aa7f9de75ac841861fae2e8ce3795fde8e7038c8506f573cf0e0f00000000000000000000000000000000138ed243889db13546c69583c1aa93ee98366220ad80c590ad112adcb4b7c87fb48a34483e76d4a5c55a30f2adf1a6a6,,,invalid point: subgroup check failed +0000000000000000000000000000000004db2336ff5016a6f0f34b2881eb80cfbb35f557ef492f2dc54a654c8c574651fc89f3f211a46510ebffcf5c890e5ee700000000000000000000000000000000103d17d59c26d8c85426b73593843e3863cd672043b7a392cdb05bf5dd69cd11583423a4b146dcd3fbcde4ef4349bd78000000000000000000000000000000000e07265d2762e8e398c83efe1c43452d91b90b7a4271c09ff693c83745a6c01b73561ffe3da9300c8e7e1602dbaab0bc000000000000000000000000000000000375579c16a167fd9f9f61d5177705f157aa0df3451971029a9444432db119fb33b8c07de33fc822eab46ed4ae47cf8200000000000000000000000000000000098cee454129e946d758f95e649a601b6e682467093cf32c76e5cd1328111f9d48cbb2850d4d2faafe429161b090f8ab0000000000000000000000000000000012a3fdf296743b2eb3f389eb6dbea52da21e7dbaad180177184afb7976e06fd4ad488399d39b760ca146278cb3759d7e0000000000000000000000000000000004db2336ff5016a6f0f34b2881eb80cfbb35f557ef492f2dc54a654c8c574651fc89f3f211a46510ebffcf5c890e5ee700000000000000000000000000000000103d17d59c26d8c85426b73593843e3863cd672043b7a392cdb05bf5dd69cd11583423a4b146dcd3fbcde4ef4349bd78000000000000000000000000000000000e87688c9f6f48450528cec78f874d87dcfab499bce391e964a0abd601d675eec8a2b4cc6c44811cbe918913a230975c000000000000000000000000000000000451c1a17567b55123da563e173b2d92ab635c4957d116fdff8eb5a3e00bfbe079abead42b9c990b56db919719d066160000000000000000000000000000000003206eb27b9e53bc451bdbe5059133a51d656d9d80654647163a070741761af3e712e2042acc5ca29fe72cafb3a98ec7000000000000000000000000000000001869b7fd294c230aa5901db9cca31e6d3801069e0795e4c7c63dea8adc1e4a5709ec62670e2abeeb040031b7fcc8521a,,,invalid point: subgroup check failed +0000000000000000000000000000000007248a496f2cc918cc3cf0240c5c3d0dce36228a199766106999205b5767db09c2ff5cc720691ebc6bb1c316159d1c000000000000000000000000000000000019ab8e34bc4c0ba409c7edf7bbd4d0cf03f7185a2baa3f22ebd6234503d56e9b0d84a5d8d46ef9e3ac6430029be82b2b00000000000000000000000000000000143220e1cd08ffaa6db4795ed4aa35f3b12cce724fcad005367328972f2364f34096e32f1f1cb7a4287ab636d0030322000000000000000000000000000000000f2de47a37a55edbb75ff0bcc446611d690d7f9efdd09ca1ebb6f1d64a330bed420bcc85aed8b95316fcac3aa7d1f2230000000000000000000000000000000016afb044b8b8c64547e000f80b25576aa329a4319dcd4f1bbe15d12e6f3bbdddbb52140e6297c637311ef0c7a31cafab0000000000000000000000000000000019e6803c07fbaa075093f6a69f9dde05ba3d3f58e67389d7f096e56df49f8270008ed422b64fcdadf7cbbc8334037682000000000000000000000000000000000b231eac9869c94f055f22c16ef5efb687a7399da838c9456bb2469b3e394dd21e462bcc9298d5b56173c7b76f79ee9d0000000000000000000000000000000013a1bb963b7fbe1c3f6bb78cce8c3122773428ccbd87cbb2e76f306a8c5369577267e9b4ccb3417a235fc9045e8828f100000000000000000000000000000000143220e1cd08ffaa6db4795ed4aa35f3b12cce724fcad005367328972f2364f34096e32f1f1cb7a4287ab636d0030322000000000000000000000000000000000f2de47a37a55edbb75ff0bcc446611d690d7f9efdd09ca1ebb6f1d64a330bed420bcc85aed8b95316fcac3aa7d1f2230000000000000000000000000000000016afb044b8b8c64547e000f80b25576aa329a4319dcd4f1bbe15d12e6f3bbdddbb52140e6297c637311ef0c7a31cafab0000000000000000000000000000000019e6803c07fbaa075093f6a69f9dde05ba3d3f58e67389d7f096e56df49f8270008ed422b64fcdadf7cbbc8334037682,,,invalid point: subgroup check failed +000000000000000000000000000000000ee60801e3aaacf27167207a03b42594cdca4cdfe3a1f8e5f87b0e423ad36c56725dc79a26c157f41699e89884d27c1b0000000000000000000000000000000017c92b0beee470e126830843170bf0a89d13856ff6b0209e23bbf2a68e0668bd81db29de726ec7593124bea89771da97000000000000000000000000000000000a1beec4d223edbf1d09c448ea27038327bd8621842d3c7851779286060abd8130e4a641100627057498a421b59e90a600000000000000000000000000000000076a9559f5e33a2d5bdff6a89037c12e58ef920a3d8b9b4ca2a78299dca5dbf07c80d51014ee9288af8725e6c4312225000000000000000000000000000000000755036dd19c7d703343bc29238ae9332823514aeb4779b3378e8f7a3463a4089eef3fe79608db22b703b5d88c65bd80000000000000000000000000000000000ee3d82959dc04b5d59428142411e48e7a2fcfcff91e5554b725868c62d139bfd763720c9e2727c1b1fdc0bfd60f7297000000000000000000000000000000000ee60801e3aaacf27167207a03b42594cdca4cdfe3a1f8e5f87b0e423ad36c56725dc79a26c157f41699e89884d27c1b0000000000000000000000000000000017c92b0beee470e126830843170bf0a89d13856ff6b0209e23bbf2a68e0668bd81db29de726ec7593124bea89771da97000000000000000000000000000000000360e8bf07554b56d6f27de6a4b1f9184adb7980311e8f4128f619d9c8e64e98bcfca8eb3cab93e183882827fce2d06800000000000000000000000000000000010b0b114b55b17531576f782b6bee122cb5fb1e40d5af37ebaa1d4dad55a0f5d130c9a58cf27b1594eebd0b1492c0400000000000000000000000000000000018b70f0c047aaf7e17cb96015642e0d32f3135999de6dd8bded2c600866485ea75ab3a3e37581ae7dcfa1f54381f542300000000000000000000000000000000028cbef4b476a9cfb8daa35b1321a486b8c94f8b8df2352a0c8d509325706eee328b8dc3657122afb81be1fa2e60aafe,,,invalid point: subgroup check failed +000000000000000000000000000000001573cb3b6f4e841fe97549f42e06db33abeb2bc481cc0bc8c5e7bd81948432dcbd34b64c5766e1e491bc131e77a011aa000000000000000000000000000000000e205be14db0dfb21e58b302d45916de4f4bb48ac95228326cf49c50e6c8588a655a343b90645f73dd03c9aa51c5659a000000000000000000000000000000000a109e3cf72bba0e695bd756478c72884210868c95f0dd6ced22b7254eed0432c2345bbf8addbbd11349fec6e354d2350000000000000000000000000000000018aaf98535812ee760e17ad933acbe6b57bc1310b6fef550210053f06a611ce9df5dfcfdb028497468802c08cc2117320000000000000000000000000000000007590fa8cb07f9dc2ce7b2090685730104ca65a101c8f93965264913bf1deae794b71ff226a805a273248dc641225585000000000000000000000000000000000fbca4e20854a6069c298224eca9a064b7ddc4d834f8671ac45cb5d1d39265fa435ff1750cde5135e170824e516d6d2c000000000000000000000000000000001510f39616d7f576980055d0547c603d882dbe85dd0b634577fae134f210736007345d035d815306db660de4a07fc24300000000000000000000000000000000064d356ad7bd2edcd3622b1fc225fe319f86b5f7da875cd57fe5adc5bdb6443c5b09d676950e2d069bd4303b8f920692000000000000000000000000000000000a109e3cf72bba0e695bd756478c72884210868c95f0dd6ced22b7254eed0432c2345bbf8addbbd11349fec6e354d2350000000000000000000000000000000018aaf98535812ee760e17ad933acbe6b57bc1310b6fef550210053f06a611ce9df5dfcfdb028497468802c08cc2117320000000000000000000000000000000007590fa8cb07f9dc2ce7b2090685730104ca65a101c8f93965264913bf1deae794b71ff226a805a273248dc641225585000000000000000000000000000000000fbca4e20854a6069c298224eca9a064b7ddc4d834f8671ac45cb5d1d39265fa435ff1750cde5135e170824e516d6d2c,,,invalid point: subgroup check failed +0000000000000000000000000000000002ff87f9bcde30db0919444e2582a5e987fdda67264ed7abf60a93b37288143dd44db75403988cb5b3bcd8d34ebdb4e2000000000000000000000000000000000c672f8bf6e9e747cccb9438be047e56d1cfbd0808864e601de59b0b28b5438cdd10f1194ff5abe8694a598ff3dc1481000000000000000000000000000000000c01823cb218303c7e611f6caf6994615cc3805bb4310bb0bb82b56740c4314ed0a2f9409c8fa6b9f10dead667880fe000000000000000000000000000000000013eb3436ceac3f12dcdd9e71707b85b7cd872ce144c502078d4fd3ec8b4ee579410cbaf2e3db1df9ba6b55f14fbbb0c000000000000000000000000000000000ecb26e5814d5bc66fbbcdff5dd5934a597c4344487e7e63138c31d47a8201433be5ce14205660cae129891f5b7aa8e000000000000000000000000000000000040241f695cc864e99e1dcb04440135c4f3d90a86310441647ab265e9fedf51592b0c11d5e91d2d28ac4ed19245e9cc90000000000000000000000000000000002ff87f9bcde30db0919444e2582a5e987fdda67264ed7abf60a93b37288143dd44db75403988cb5b3bcd8d34ebdb4e2000000000000000000000000000000000c672f8bf6e9e747cccb9438be047e56d1cfbd0808864e601de59b0b28b5438cdd10f1194ff5abe8694a598ff3dc1481000000000000000000000000000000000a2e0129c31f3427340e234df5facbb5d1994a4c8a058fe84f7d5c62c7d00013cc0133d8b0faf497aa8f7c04abc59c3400000000000000000000000000000000160da6086a089fc1a31b89a0f0c95ff2bd85debf5f0d1372f3ca6fc26348d8a8d0b03525b27f7d7db6603f0e55d3a08f000000000000000000000000000000001893edc299faf35510b92c97ef665f458b19e4097299b4f8b0f8a2ea1f31343c9d2f4c35dbdfb36bf7f3e30686e8c3240000000000000000000000000000000009b8731ed8df8ae90ec344c9dea1eeee98f4000b5fe30460e58f30e4ea17821389d613458c7721fd1d759ec4f2bcb325,,,invalid point: subgroup check failed +000000000000000000000000000000000e42f5097dabc6b0fef4dccbfc659da40b66671d7efbc19dbc14a42a368402156469c818f233ad911574899db01ed86d00000000000000000000000000000000128bbee344b7a19212b549cefaaec31c0644c986ab863005e4d3ecf532be633597ac3906e53ca79b22de916ab92b4ad70000000000000000000000000000000009003b42c08b5c7d3ee9f6abb96e08e6f537da25cd0cf7eb85a49067746c03566e133b54153380286ef5725db5b41058000000000000000000000000000000000f09b7b754c255e0e3b8435ade64d6960285759495659dfdb9b117806397baf8d3c87e30bee02c9e1b22fa3efcc58f300000000000000000000000000000000003582c08a8de4bbd20ebfa833517a75682618fba2702b6c71a4785f70dbdede4e86ad8e04aae1f50a6bb75842ab74aea000000000000000000000000000000000ec013f22e64a4d4fb6f964e8319feb1ddbcfb71329186545d9b9d7f97d1f6a56c8aad03d20e9c30966ca932e1f2bc670000000000000000000000000000000002f78becf8a5717fbfcbe110bd6d4ba683658c1a45afeaeecf7742502d3df54b262de4fe30bd41ed0019cc79b595b5ad000000000000000000000000000000000dbae184899af1ad6221b75fc62cadcd61c623e011672b691a5aa498684f49796220fc5a73ea7170ed2fa44b9f3c39090000000000000000000000000000000009003b42c08b5c7d3ee9f6abb96e08e6f537da25cd0cf7eb85a49067746c03566e133b54153380286ef5725db5b41058000000000000000000000000000000000f09b7b754c255e0e3b8435ade64d6960285759495659dfdb9b117806397baf8d3c87e30bee02c9e1b22fa3efcc58f300000000000000000000000000000000003582c08a8de4bbd20ebfa833517a75682618fba2702b6c71a4785f70dbdede4e86ad8e04aae1f50a6bb75842ab74aea000000000000000000000000000000000ec013f22e64a4d4fb6f964e8319feb1ddbcfb71329186545d9b9d7f97d1f6a56c8aad03d20e9c30966ca932e1f2bc67,,,invalid point: subgroup check failed +0000000000000000000000000000000002dd02e23d8a9b7aaba94e8ce97a2d988291b6efb1d4d8d1c53b65581b737f992a428cb72ad38d4c6d470d6b50c869f0000000000000000000000000000000000661ddb1f0edbaa208c5e1db143ff41be5a35442da7b3e12d2928310ba5b64847f4909be93f860858f752cffce5e73870000000000000000000000000000000018fc47e1aaeefc1ea653eb42543940ba58044b247eef2627331142988f3a1a4fe72583738c7caa00c562d010089754eb000000000000000000000000000000000b5f8e9d774d99c3b6d224790d5c48367d68167aafc309ad8b351d1de8b601211737235bb0ff1b01e508ecf36a40db5d0000000000000000000000000000000013509c76fe4383e47d8ea35ba6ebcba13579bbf43cee0cbe27291d2601c3d74428bc9d5d1200718c86977abd16cb77a7000000000000000000000000000000000efbeccb9e9f348ba98ce0fd191c2e81de4925d7185f01b39a51aa44b30496f1fa3be4582c539889bef7b5783f730aa70000000000000000000000000000000002dd02e23d8a9b7aaba94e8ce97a2d988291b6efb1d4d8d1c53b65581b737f992a428cb72ad38d4c6d470d6b50c869f0000000000000000000000000000000000661ddb1f0edbaa208c5e1db143ff41be5a35442da7b3e12d2928310ba5b64847f4909be93f860858f752cffce5e7387000000000000000000000000000000000629fc2184297509e1dc0707b707067fa8b9a079d95f271ca230c32705c7e783f91ce1ef0323aedc6aa2febf750392b8000000000000000000000000000000000f29cb4bdb7d53671f9f1b1ee514cc916a657b7c17f298f409ad92ad7b2ca36b0298bd0581db7837994b781b829980c30000000000000000000000000000000014b839ecd27f2d6fdb92a36792c62ef503fb0189d3174447c4b1132e5f66d7970a005e315e6906ecd2ce6c72742d210500000000000000000000000000000000091bbfcfbd929cc8ecd000cf8ccf083c2f8cbd84f19b48b1ad20781e675ca7a77887b962435520e3f707fc0631fdc8f1,,,invalid point: subgroup check failed +000000000000000000000000000000000f67855b0cf915ab52190c7e69129d40dbeffae28fe110745edefacdca42bf979c5c5da1c6ebd78b43667cbfe360874c0000000000000000000000000000000014c5523f37b011c632e9e8eb08611e5a244ace2746264706b92a5a933b34bb9932c95c493ea7e8fd049d80acddd05e860000000000000000000000000000000012b63d867bbfe5505a83f765b85b0e8f182c796857f11125e691969c8e81eae927a5e1b137c81473e8b99ea0727c873c0000000000000000000000000000000010a8241f3b30c54a5d2fd7adca9be47b001f2268973e955ffa61d57793256a2d82fefa5e449548c64fa5aefda6d933220000000000000000000000000000000008e7d2f2e34a60504a5437275f358d0e742c445080c5e46053ea459893d6865e8d20906b2b58f1d1446a100cb1c9a513000000000000000000000000000000001369bfc5f24e2a7a7ace891444764ca32a32513c8ddf654f418c6eb7690e2cba77a4c4d4b98eb546d4e4046dd3c3267200000000000000000000000000000000153310de30b7a485753dd8443f8638c12b21083f6133a1c093648bcb566b33f73631c6fc558f32abeb0d6df8430e61a900000000000000000000000000000000005be397e9f77556ad952dba0540f46cbc7db910d5203cb976e168a7be3a3b8557c5f08d51cca9379552694a291d67fb0000000000000000000000000000000012b63d867bbfe5505a83f765b85b0e8f182c796857f11125e691969c8e81eae927a5e1b137c81473e8b99ea0727c873c0000000000000000000000000000000010a8241f3b30c54a5d2fd7adca9be47b001f2268973e955ffa61d57793256a2d82fefa5e449548c64fa5aefda6d933220000000000000000000000000000000008e7d2f2e34a60504a5437275f358d0e742c445080c5e46053ea459893d6865e8d20906b2b58f1d1446a100cb1c9a513000000000000000000000000000000001369bfc5f24e2a7a7ace891444764ca32a32513c8ddf654f418c6eb7690e2cba77a4c4d4b98eb546d4e4046dd3c32672,,,invalid point: subgroup check failed +000000000000000000000000000000000f3300926ec62bbc0a73e4e0404de3a55dc0ad4fdc393b291ccf9f80818b6a69c0a3f9c6edf024db295a353b6aa71a5400000000000000000000000000000000195b21606667c62a181b275184014fcef97218b451c3642e2e4dcf5502d03cbcc88839e827732feb32e77e52f702529c00000000000000000000000000000000198fe6684d3de4ec9c9ed5c59c9e662c4eb1b026995859db3a753ffa96c6cef7a063a607fc54599f706820fb864d7b0500000000000000000000000000000000116af6c03511ba2bcc32ea54c2fe2bedfb0848d2ee3017547cb25acf892400203e3ce4ea1986ecde0cdd383d42b61e180000000000000000000000000000000004a22ed8f30766b6b1dfc7286616066ccc262875e3de42e2c9528f6d23a7fda67ddb371f9ec419ae4dec48a354ffe21300000000000000000000000000000000086651d7ab0a4b1dfb9a56e42443f42d48c1f16866338d997adba078736d32bf4387b95da2da33e714662f800838a077000000000000000000000000000000000f3300926ec62bbc0a73e4e0404de3a55dc0ad4fdc393b291ccf9f80818b6a69c0a3f9c6edf024db295a353b6aa71a5400000000000000000000000000000000195b21606667c62a181b275184014fcef97218b451c3642e2e4dcf5502d03cbcc88839e827732feb32e77e52f702529c000000000000000000000000000000001367e0843d866d010ab03723026aa9ab1f930d3579daeabadc1fdefc06047ade30b36326d79bbae74293d3daf2e6c7a4000000000000000000000000000000000550be918ba9e28ddacb89ec526db63072bc14a62ec7ac06775f951de5b32af93d2d8f95389a6384cde62dffb941fb5a0000000000000000000000000000000014f59aa4f0603d5f166caa5692d9b068ee10a6f45670c6f4d492a4d1fa7a13a5146efcae33a841b5acf75a32b853b2770000000000000000000000000000000010ca0d9ba50c730006c95bc5439e2d39a40a9055ddac935a900bdeafe7141990db20ad0a840d3297c4b9b5f69aada6df,,,invalid point: subgroup check failed +000000000000000000000000000000000b9590b1d0d292d9967d759060a551f4e8e4c1c0066a9a3c0be515085847fa26b77462e3bae9e2621f28e01f897df0bf000000000000000000000000000000000a00d39c6c14d18dc5888b8a8835c3ef6f83ead2fa380be24ae857677b904b3868ceabdbb3abf3c186c5353a67fad0a60000000000000000000000000000000017d978d60fc89b0429c1a6424231fe9274cedad5d78d9c4ac5aa2dd5e70e8238a0bb1904bb4b6ee5de5cd1ac514c62a8000000000000000000000000000000000d4ce85a95dbc40f405f4e7ebf9121cdcd22766737c39618ad0fb3e10a6e53be1faceaa96073b2a877ab808483ec9b6f0000000000000000000000000000000016c61599ae4da787fa6db233fc28f5c56f7133d403901800ab5fa19d058fb27ecb34ca2e56ffa7628ed004c9e62092700000000000000000000000000000000001e64e4adfdafbb423b1b9f8973738c690713911f68f658d234e57dc35b9554e0f7ba345dd7920b429a12b9c74775222000000000000000000000000000000000c453b5a2f6c721f0303b6b9205e51ccab7829345e0cf13e457491ff35e0f38dc5ac2e5b0d8195e3d322704c38d3280600000000000000000000000000000000092ddd55120b22e2853983dd3dea9bad3e4bf23e46dce297aa3db85856907d1b980185c5a6e02890f24a5463e7895b950000000000000000000000000000000017d978d60fc89b0429c1a6424231fe9274cedad5d78d9c4ac5aa2dd5e70e8238a0bb1904bb4b6ee5de5cd1ac514c62a8000000000000000000000000000000000d4ce85a95dbc40f405f4e7ebf9121cdcd22766737c39618ad0fb3e10a6e53be1faceaa96073b2a877ab808483ec9b6f0000000000000000000000000000000016c61599ae4da787fa6db233fc28f5c56f7133d403901800ab5fa19d058fb27ecb34ca2e56ffa7628ed004c9e62092700000000000000000000000000000000001e64e4adfdafbb423b1b9f8973738c690713911f68f658d234e57dc35b9554e0f7ba345dd7920b429a12b9c74775222,,,invalid point: subgroup check failed +000000000000000000000000000000000eb7d975030858b57bae3e7a8a7e297f9d7d6b2bcf27fa8bb9b73cf60a1a1a5e6638adc726eb2e7fd5500353de95179e0000000000000000000000000000000015c783845a98d2b12a8cada673e1df4c266b34302cf7d004e00612584d0913283d43150337c36dc3912bbd757e6a370b0000000000000000000000000000000014a0222d6d0a809cb5598db18e35f5b7f5c49ec5574fbb5d801d9f890ede23d20c62a22321394b6efd1a45b9780a4efd0000000000000000000000000000000017c8bc1b8f7ebbbcd6203f6ffcc758a787a96533a77290affc18b76fc6dce7c2ba8f169dd8ecdb8b240c92664852bfc70000000000000000000000000000000001a673ad0af4bdd53027b145472d1e8dfa05029b7ba5bcb7dcc63b5e6369b2e693f27e5665167a8dc8b6d3c9b85eccbb00000000000000000000000000000000085efb596145e58b4eae7aedc8f7aff6949f1edf8fbe0c88e6dcad46423cf7b2d5f8f54bbdcf8f1427438e6a4da71914000000000000000000000000000000000eb7d975030858b57bae3e7a8a7e297f9d7d6b2bcf27fa8bb9b73cf60a1a1a5e6638adc726eb2e7fd5500353de95179e0000000000000000000000000000000015c783845a98d2b12a8cada673e1df4c266b34302cf7d004e00612584d0913283d43150337c36dc3912bbd757e6a370b000000000000000000000000000000001425d6d5cfd04d310d8ef3ff1a3b3d227771f3bb3cb552c64ca1debd3e2e75e7a96b9a0d5768ff041098d743de445e790000000000000000000000000000000008b12959963c17ce7247490d9806e0ab02f9aeed8d8faf4591b955885f5aae509358a19c1eab19dacb72cb67b9c22c46000000000000000000000000000000000a7108fb7442fa6c50b472dda60d6c277bba83aa21ac1630bd3df6f116c8a58e60e8c4a303a041b9825b65301d388e410000000000000000000000000000000000faf3042f00060eff3e5e13e1a964c9dd605677596c49cbeccd6d0374c6a4ab9742cac63d1801631d5fa5e00d399fd7,,,invalid point: subgroup check failed +000000000000000000000000000000000f6d131c756d031041ba97dd20719cbfc864de16dddf00d282f6c41de683d193a015a781232ea5513321c131505fa4ee0000000000000000000000000000000008d754d62b8f1fb0d0e9dfe4746d9c5f9e4a296c6799d6379a4a1a07583d0959c62b05011b636b72cdb87d3c92d94f3600000000000000000000000000000000061bf88e4c5f6bfacbf1e2e72566d9c44a001237f22d7f6a7240ee0bd3c8d175786f7c2ace267774fa5615d7bd3ec8f800000000000000000000000000000000192c987bed20d707400d3211e480b8760021a33dfbaef829b1e865f92b37cd3962e56a38d4c06c5ad73bea5e7321b176000000000000000000000000000000000dbc62270cf7623e571f6ebcd29f426f214cf1c8f71edf9aeefbeb6037b7e71bfe41a55828cd4353bae2e1e927812aa80000000000000000000000000000000005f6e7064a9708e20bce8e5002c352b13d4531d87be1320bcf3322d5e2b851a54aefaf6f9ae26e277ecad307c448511c00000000000000000000000000000000041fd1625afa48a446454d6613c17cc6a65b3ec8b8f2125c0eb7b8e5d07968397d43969a6579226f496d9b24dbb71b820000000000000000000000000000000006131c506f243b5ac40354f826ac1838839eee9f61301aabd88e499d40e57df3122edc8b36f0a8b16b72f9ac783efd3e00000000000000000000000000000000061bf88e4c5f6bfacbf1e2e72566d9c44a001237f22d7f6a7240ee0bd3c8d175786f7c2ace267774fa5615d7bd3ec8f800000000000000000000000000000000192c987bed20d707400d3211e480b8760021a33dfbaef829b1e865f92b37cd3962e56a38d4c06c5ad73bea5e7321b176000000000000000000000000000000000dbc62270cf7623e571f6ebcd29f426f214cf1c8f71edf9aeefbeb6037b7e71bfe41a55828cd4353bae2e1e927812aa80000000000000000000000000000000005f6e7064a9708e20bce8e5002c352b13d4531d87be1320bcf3322d5e2b851a54aefaf6f9ae26e277ecad307c448511c,,,invalid point: subgroup check failed +000000000000000000000000000000000c9856c54b638559ce67cffb3e784b9649bbeabe135c89ecb8108341a16ef3c5ac49e9243144792a4f9371f2d6f8f6b6000000000000000000000000000000000e17a67cdee23e13c95e5b951c5f51703660ff614fbba363e5a73ea74b86af6893ae90a929df3d7e2af8852dbad77a01000000000000000000000000000000000c01d2e1592a61cda87dab7fb2a45d7468a8ce56f74fd7c8d401e224b9610d675cbdc0d4719dd2dc10f47547bc641dd90000000000000000000000000000000002d57ac9ac9b4cd7a477e162965c763ec1d0c5752b478449839e0ebd7a1110374fe90aaa2006bd03f08f9242c0419e99000000000000000000000000000000000d50b11e1ea90ef8ef0f7a95ad41ce2cd30cf804e46a96762fadbc275ad513827e6e75b95968a00b42085aa89bb0839e000000000000000000000000000000001250e40358d42dd3a6aa2dc93d89010f2a7b33e5b426ffd7e6eeb9bc02f8f22fd6e91c4fae603f14ed682617dd503eda000000000000000000000000000000000c9856c54b638559ce67cffb3e784b9649bbeabe135c89ecb8108341a16ef3c5ac49e9243144792a4f9371f2d6f8f6b6000000000000000000000000000000000e17a67cdee23e13c95e5b951c5f51703660ff614fbba363e5a73ea74b86af6893ae90a929df3d7e2af8852dbad77a0100000000000000000000000000000000048dfa619f3f77c794d119ff97e04826b5bf49d71591b778b502205875b97b17c9c9d2ae95c8d7035e9d2ade10a511ff0000000000000000000000000000000002fe9b3108c8911b07e4ee52a8d4df17bebc8153f837665513ad5c8af53cd7387100204fafefc2febb2f5e18c9d958b10000000000000000000000000000000016c98a41fac6665657b00bfe9336942e7aa145bea3131224ffa35ec9b9cd4d629b4ceeca98a15ad07e03ffcf898f8a390000000000000000000000000000000011a0d16ccdf98beffdb0953c509261f18567a1656acdd895395b480ebf8843e7d3b965e2151c58e9b610e9e3b5491832,,,invalid point: subgroup check failed +000000000000000000000000000000000f4eebd0bb8233e020629f72258d3cec7fcd3c181fa913977a405ef7437f6fdc0ee34fe6a7e349730e695f383e4478ad00000000000000000000000000000000080577fec3a6cc706037b43cd39f4bace98191511cb26cc606c11659b63112b519123a00b62158ab7a24dfe086705b470000000000000000000000000000000011e8ecf1e341f0146c59a79a8428bb01d2399d3f87d90d057f63e6cb9837432154d17975f70df175a016735caf85120a0000000000000000000000000000000002a5bd53e4f4c5b9682e1af1f7e09dd305e7342d1688f62885b5e59f173a9fc731cec481559ad693030004a5fbd90a9d000000000000000000000000000000000f9601f95e12bf05c35deb204558d44a60fd630c05f4060b7bd9ff943946e8eab507422afe00a3e7706b8ed013f712c20000000000000000000000000000000003bf6fecc0c7414a69c2b48e2c16e88d988ea8ae9d8b59017ecb89394732a20e4321cb5e4fb071aec7d2736220a455370000000000000000000000000000000018fe22fe0b39f508823e2332712f988efcce291d93c416c544272e88cc0902d79e41b01af005feddaaef6c42a26c824700000000000000000000000000000000164fe8d2934cda6f0b863bb42d13f91c52a49706182f8d337d6a629da65113818d1c177508d6735cc86a6b3837ce49320000000000000000000000000000000011e8ecf1e341f0146c59a79a8428bb01d2399d3f87d90d057f63e6cb9837432154d17975f70df175a016735caf85120a0000000000000000000000000000000002a5bd53e4f4c5b9682e1af1f7e09dd305e7342d1688f62885b5e59f173a9fc731cec481559ad693030004a5fbd90a9d000000000000000000000000000000000f9601f95e12bf05c35deb204558d44a60fd630c05f4060b7bd9ff943946e8eab507422afe00a3e7706b8ed013f712c20000000000000000000000000000000003bf6fecc0c7414a69c2b48e2c16e88d988ea8ae9d8b59017ecb89394732a20e4321cb5e4fb071aec7d2736220a45537,,,invalid point: subgroup check failed +000000000000000000000000000000000d6e0830ba9839db89621518e1ed86e9d035d7fb03b18d8a615acd58ff5c8c3dbdcf1acfcb8a910e8d3d0da770057cde0000000000000000000000000000000018c38d6e458e22cdd381010568606d26770b9eaaeb38e02a80cd0a0d584577fca7b391bbabe902825a3338682f7d3173000000000000000000000000000000000e5d5bfbe5ab3da8c033663cc457cf69062e1de6bcda6420826301d4e5fb4c47a5c90432f15608aa50678ad083f618c700000000000000000000000000000000146cd56ad5d977fa6471f7c12ee3fd66dfbe4b276b846cf4a74619cfae4a5101e85d01db615e0e6d28a5eca7a92cd05d0000000000000000000000000000000010fa99a243f1de85f40bf6a08e3e9ed3e478562468f0975bb79b1b80c9eef8c433c18ccf6e5149eb99c21f74494eed6e0000000000000000000000000000000018504d4687cf9f055c5cf8360fda2cb2123ea3a3e9c8f58853a68063e60a7ba24f2d1c153090ba2e77156cbb5ded79d7000000000000000000000000000000000d6e0830ba9839db89621518e1ed86e9d035d7fb03b18d8a615acd58ff5c8c3dbdcf1acfcb8a910e8d3d0da770057cde0000000000000000000000000000000018c38d6e458e22cdd381010568606d26770b9eaaeb38e02a80cd0a0d584577fca7b391bbabe902825a3338682f7d31730000000000000000000000000000000016267be431a654019b3f02389fb2f2f307f3bb56590c3ff1924554b2ee6fbbb68381b5ba4a8668fc541dd7e3fe9afc9a000000000000000000000000000000000c41d1daa258be71001babb484d98501c9ea015aad96e398aa6015b9ef618f6a56a45d45383dc34c70ca05242490ae18000000000000000000000000000000000dadc282d8cc0c066f28881cf440fb5a621449dc16488d02e34492fe8af53fd1749886fe6df2e377190e4043d6e3dd290000000000000000000000000000000018a30f1ae8927af27147ee5ea3c7aa848b0e303d16018fc2c3ca4bd088ec5ad3a808e7699ca009a4bf6f5b707edc1fd8,,,invalid point: subgroup check failed +0000000000000000000000000000000009f71faeb58c4d442272ea0116a03f106008ed68030bce1bc53a3964ec4f9758f508735c8c17017645ccb77124b46cb40000000000000000000000000000000016a2ea9e548342538ccfdae6806ec9ce0b7b892875155f898017929d7105001e8de041bfcab7398cccd060dcee3b6e84000000000000000000000000000000000579462f03502615d26d76e05c758a7f835e4e70f1adfdec8c7ef26580544326d66ba4e23be3c078e1f187ab498ab9dc0000000000000000000000000000000000d386d0af32f630bdf6c13ee82fd35e42961ec4b11ee8fa196d69bed775b8ecfe74409693c531631aa716957e5fe6d7000000000000000000000000000000000ce8a020608c1e7d70d7a03d11b84f48d6b3b77c5836b7c914627f3a84d3d0b3de513029c1379b20ee38a19928e57f44000000000000000000000000000000000dd10882001be7fa52ff21f1a0adab02e688539f098901fe515b61fbdbca02c4146f6c17f7ad7cf59f5e8acd85da60b000000000000000000000000000000000128e019ff92e7171d3c791bd4cf75b0f47c2a9d8722b4a8279f1178db6dddf8a4c00083a935168518a1c26a56b23624f0000000000000000000000000000000008d0c5f3300e73682f4756e6ff1d6722dde576beb587301ded34427d6935e59e76cc8a8cb0ea5f659db9ad5435851e53000000000000000000000000000000000579462f03502615d26d76e05c758a7f835e4e70f1adfdec8c7ef26580544326d66ba4e23be3c078e1f187ab498ab9dc0000000000000000000000000000000000d386d0af32f630bdf6c13ee82fd35e42961ec4b11ee8fa196d69bed775b8ecfe74409693c531631aa716957e5fe6d7000000000000000000000000000000000ce8a020608c1e7d70d7a03d11b84f48d6b3b77c5836b7c914627f3a84d3d0b3de513029c1379b20ee38a19928e57f44000000000000000000000000000000000dd10882001be7fa52ff21f1a0adab02e688539f098901fe515b61fbdbca02c4146f6c17f7ad7cf59f5e8acd85da60b0,,,invalid point: subgroup check failed +00000000000000000000000000000000167a40d69e2d2e5683ec69af7b226c5456d05241d9c9eb24e988ee2dba845eab361a956cdea64cf971dafea08f0056260000000000000000000000000000000014e5b8ae5032a924da081d3063f31889da110d00330903c6f988684b7d77b7b1bdcbefbf70941d0eb5a34bcb010a3bf200000000000000000000000000000000043a000741027fbd191e2399b7cb5fdb4db3728d81d8b9d25362e8a1d397ec99d1b2339a3a511d0969e7e727f98d4163000000000000000000000000000000000cbda70eab332bf962d123aaf08b8b96680055f1946dd5fdb8818fbb330b816d83062ffaa79e18f1f4f6d53deda53cf200000000000000000000000000000000160a7048e508da288270e8ac5793e9461eaa282b85ce5350b6a661209efa6699874aae71515dc4265125d490a5771ff900000000000000000000000000000000041aa7292f258125d729c1761a3a6f7979a7a92ff179be678ebe301de3ffe12e4a863becbfb2bd0067e42aefc5f5617200000000000000000000000000000000167a40d69e2d2e5683ec69af7b226c5456d05241d9c9eb24e988ee2dba845eab361a956cdea64cf971dafea08f0056260000000000000000000000000000000014e5b8ae5032a924da081d3063f31889da110d00330903c6f988684b7d77b7b1bdcbefbf70941d0eb5a34bcb010a3bf200000000000000000000000000000000158feb06ab69f5da37037c554aa8b4b511e9de7e13a08c2f9a8899f5a504b191195e4de1ab7d937913f60e24a1b3d3f8000000000000000000000000000000000beeea216d85a767af2facfa7fa0399c095a23b7a974ddc3d36b7e79822d7691e53f85c976b8cc948e155f196b7f168c0000000000000000000000000000000009802e94ad5cd6b071a0911cbbc1de29a79a5a4fc145cc79db03119c3c8dac88fa3740bdb35b0b0e6e34127ee1bb081c0000000000000000000000000000000004599d1e0bfe642ff275fbf1dc86bbf83b87c241de09570183faf4e2c1cefc6b8b2354aa2be4aa9f69d6d61546d3a685,,,invalid point: subgroup check failed +000000000000000000000000000000000130761fb4d4720b8e69b849e1472f15c24cf909920c598aaecd34c5b420a1989a6ea95f89c362a61e4a11f88982f9a6000000000000000000000000000000000d707b24e8720ecd4a14d9f658060303d233253caa63bafd0f475b2985fcebd326924c936a9d66b21b9a75085aaeb54e0000000000000000000000000000000009faa74f66ec0384f0458893c0026f73688c764e8df9ce056a88a2ed0b84ed8f88d1b683443a3269a3db838f8aeb808a000000000000000000000000000000000949c4be2708c1aac86aff39290ab6a8e0f332e7a098bbd64227a175473d9dfe136e07548b282f69a94a15e2c32dada10000000000000000000000000000000014f2c7c7da781e2f50803e3a948381c3c439b127949f79824df1e5722c206efccd6c0ec5dd75ef63d8b1fa301c83356900000000000000000000000000000000176753460d241f38aff41bafdad51688ab0dc9a5fb3643977c7b9d282ad4532fcca1e725715227780ec28bf1c32bbc1d0000000000000000000000000000000010ad2405965f283c845edf92cf34508c0ca625816690d739fec9776d261784a946e083112d11c0776edd04403eaa5b820000000000000000000000000000000007e400896eaaddf797643b05a53f612f73737a2c438762d3f6216d53761f28bc88f402a4f02f36d26bbb431616b1b5690000000000000000000000000000000009faa74f66ec0384f0458893c0026f73688c764e8df9ce056a88a2ed0b84ed8f88d1b683443a3269a3db838f8aeb808a000000000000000000000000000000000949c4be2708c1aac86aff39290ab6a8e0f332e7a098bbd64227a175473d9dfe136e07548b282f69a94a15e2c32dada10000000000000000000000000000000014f2c7c7da781e2f50803e3a948381c3c439b127949f79824df1e5722c206efccd6c0ec5dd75ef63d8b1fa301c83356900000000000000000000000000000000176753460d241f38aff41bafdad51688ab0dc9a5fb3643977c7b9d282ad4532fcca1e725715227780ec28bf1c32bbc1d,,,invalid point: subgroup check failed +000000000000000000000000000000000220d192e0c635f05870113aac899f996622cd21ad251fb4c300a0ae0051dfd93b0b622f54e149fc4e5bf280ef31b0c6000000000000000000000000000000000dcfd7def563a0937b5173d20f830e6a2350a9d6f1b8a2193e5f755142e850bb7f95519ca187dfe735c197c21688528c0000000000000000000000000000000002479a989dbf27141bd9f467447218dfa6ef60781a7231f089d5f1f1d8dca2ce9606a75c09f63f37f9cc1ee61dceb32500000000000000000000000000000000037c2f1b96170f6847138232bac663e4940bca602717c877f58ff7f5259778246085d499ec6bbeaade18f738df333cc700000000000000000000000000000000115a30e7b71e48efc7166b9a8d2e1ecec6c6e4c058065a18277ca547cf1ebc193e635eb9b65d14c9c94ebde3c83a55dc000000000000000000000000000000000b68916150436f74c61b071a339909f78701d1f3045f7201f076991d7447570fd90887126ca54d96c1310e59ad489190000000000000000000000000000000000220d192e0c635f05870113aac899f996622cd21ad251fb4c300a0ae0051dfd93b0b622f54e149fc4e5bf280ef31b0c6000000000000000000000000000000000dcfd7def563a0937b5173d20f830e6a2350a9d6f1b8a2193e5f755142e850bb7f95519ca187dfe735c197c21688528c00000000000000000000000000000000147610c1075d625dc36388a2bd451ad2c15eae8cbd30393bb9fa30fc233b29a0f5483579752a748bc0f5ca9c90875e0e0000000000000000000000000000000003dff69511f2a53e859b6769ef4c257acf31062eb72f8668f57da60f225ac052badef9df25d43148b4d3baa64c29eccc0000000000000000000000000000000006d2a71dd9c1b302e22c4cecd14dc385e068e63e28e167c060de3ceac8410461d83f961c9292cad30afc0084855ebf1d000000000000000000000000000000000890ce53931aa18e42f00379b40c8e205582f71707a67761acced851fc91755505ae960951dec4ef46353b66e0b928c1,,,invalid point: subgroup check failed +00000000000000000000000000000000050ae21faa31371d791e3f6163f1c18c577367badb337aa6fa7c8214ec58bacfb24300a81d8226e81d7f47730c734386000000000000000000000000000000000987a0c7abd7c72140bcdba9cf171389ea7971493187c567b0970f05d129b4202124d72bd01038bc77023171de379762000000000000000000000000000000000d4b71595321913e94b9e6ee6ae2391cd5037e8b55e61fd96c745539bcb4bc4fcbab678749f6d47fd2c95001da4715f70000000000000000000000000000000005436e1be9029a2f7cfac51a305fbb7e760a9171c79a5bfce6b161493fb2855df09b3345ddbc8b04318c6b2e0225b74a000000000000000000000000000000000b8f317d36c50c8d039ad137f7d9adbefb3fc147a9cfd6cceb02c75b95fe307c3d6f673a216484f3211f045c2ba9012c000000000000000000000000000000000156bc67e17c8eaa905fb7d9f3f251cc81eeecc86de791c8be30c34aea896755fe2bac28cdb035222afe6237614878c300000000000000000000000000000000065856fe1dcbef934cef47b177ecb7df76cc8796624400d5c0518aa9438bcadf397234808d099bed89ab674560ffbb1800000000000000000000000000000000071b2ff64379ed3e20cda000602c3504616dd673aebbe7690e797d6428ecfbdb29f11138169f3462dffd319cad68b96e000000000000000000000000000000000d4b71595321913e94b9e6ee6ae2391cd5037e8b55e61fd96c745539bcb4bc4fcbab678749f6d47fd2c95001da4715f70000000000000000000000000000000005436e1be9029a2f7cfac51a305fbb7e760a9171c79a5bfce6b161493fb2855df09b3345ddbc8b04318c6b2e0225b74a000000000000000000000000000000000b8f317d36c50c8d039ad137f7d9adbefb3fc147a9cfd6cceb02c75b95fe307c3d6f673a216484f3211f045c2ba9012c000000000000000000000000000000000156bc67e17c8eaa905fb7d9f3f251cc81eeecc86de791c8be30c34aea896755fe2bac28cdb035222afe6237614878c3,,,invalid point: subgroup check failed +000000000000000000000000000000000e4bfbc392b1de6b17a32387d694f634cb484be4531f425d72833a30ed5aa73a958d5081b30cf98484762ba51542f87b0000000000000000000000000000000010e6acae9df1b5567854f4bbca0ab07c6a0e726bc6ec7a1d2ce8b04e1677776d0ee2642950db040365d581a52a41832300000000000000000000000000000000036a2ac8ecf17fc72ed792c0d8939060117aa0d6c13854fdcf56ed0d1ed3b39da9a67aadfdff484850f9cdf439495712000000000000000000000000000000000a1bd875b74e1ebec19591eb137e68ca7f0db1b3056d341b6bad28c3f45e87688e73fe28e9ef44c7d494442ee0b9472e0000000000000000000000000000000002e26e5a36c008bddc431048d999b7fb44961bb4d931b2dec0cb1d1b0987587f44cd31d429a6cef05d3c060ac828ba7d00000000000000000000000000000000050640087ed6c04ffed759f63e211ff5880c8b06933c1e812954a7a4240a9c644175c4ca3048a4ed68d034f6cbdcf175000000000000000000000000000000000e4bfbc392b1de6b17a32387d694f634cb484be4531f425d72833a30ed5aa73a958d5081b30cf98484762ba51542f87b0000000000000000000000000000000010e6acae9df1b5567854f4bbca0ab07c6a0e726bc6ec7a1d2ce8b04e1677776d0ee2642950db040365d581a52a4183230000000000000000000000000000000003fea73d9ecfb879ea601865d3279ef9b271fdeb14e1094745d5718bf214f1fba99245746716bbf012e2ccff5e22887d0000000000000000000000000000000011b1aa3049157abfa01f3bef33583635873d4bc66801785f41ca51b9a11d95b49a8bbaa543fbe68db86c3560ae258954000000000000000000000000000000001740661de7e1b6e1eff626acc4e37c877d00a0ceb8008d99e76a1dfe826b4dd0ee69b150535caa20386d644394dcf6b800000000000000000000000000000000090c0bc61286187a58f2cf49e2ce6f49d721b4146d973dd7716db271da770450dcba33b7aae37d6842a43063c88704e8,,,invalid point: subgroup check failed +0000000000000000000000000000000002cd3682c1f87aac1ea91b3f4ac577f0c9531c7702864c444b4163435b4770c9a2ebf94fae2d45a63adecc314d9d536400000000000000000000000000000000103a1eaebc0ee53e21d5bda78bd912f20cc28a13e5e209e062a52ddec3453fa9c364a6b403a68d9db8a40a07755ee1eb00000000000000000000000000000000024494aab30849df790185a4f939954b724c387c9a366fbe833b628577654174f705d05e7d7dbcd29b8873aecd55df0b000000000000000000000000000000000863054fe3e4838d2caec7103e3d0453e86a17fff0dfdb84dd819f31756032e9e97b7be89b636e5e0b642718f6da217b0000000000000000000000000000000015c8bb4fcb6d9cf941b722136d8d76d847fd6d5c643f4c0049c9746e76e49726fd463ce7899f4df66d04e5d48e523e6a000000000000000000000000000000000f101bea4e1bf610d2782ede91da95eb2b0be9ce60485465b9e94cbb9530b416c4394862f0ba7ee8067bb48e94c07c530000000000000000000000000000000001b32ce5c51441e1abbbcc0b6af95380f2de24876ba377ebea44fede8886acbe23aa18681bb08130252bc04193939853000000000000000000000000000000000e5d718c9980140b41fb971fe596070982bf92937df77ef44040ffc27162bb443a60f5c64411ffefc24524ff32fa17ff00000000000000000000000000000000024494aab30849df790185a4f939954b724c387c9a366fbe833b628577654174f705d05e7d7dbcd29b8873aecd55df0b000000000000000000000000000000000863054fe3e4838d2caec7103e3d0453e86a17fff0dfdb84dd819f31756032e9e97b7be89b636e5e0b642718f6da217b0000000000000000000000000000000015c8bb4fcb6d9cf941b722136d8d76d847fd6d5c643f4c0049c9746e76e49726fd463ce7899f4df66d04e5d48e523e6a000000000000000000000000000000000f101bea4e1bf610d2782ede91da95eb2b0be9ce60485465b9e94cbb9530b416c4394862f0ba7ee8067bb48e94c07c53,,,invalid point: subgroup check failed +0000000000000000000000000000000006e340bc57495a5c01bd44eb6dee60e94feadd69bd0274e7c9755f7b0e7b4e59eb70a2cd7e4da9d1a5f60d93a5df19080000000000000000000000000000000013d7c393a2191ac8d13a0743fecd768a7e15d279be409ccea1d58ba39e91f592b425955ddfc8443861a2899de02cd0fc000000000000000000000000000000000369067d9012509bbc75333fcfa37cd42dc3d6331a55b4720f9efb937916692ed7c7cf4739142ea13fb9130e9dae92fa0000000000000000000000000000000005306d73dd33e26ece5d8cf2ea8d7e25976f7b95dc7091420c2e91b1d0b2ef96db69a364c3cdc3b24a49ec5e307553490000000000000000000000000000000008a9fe15ea4e16e675c42c25b29655683844949b9aff4448f0b79ff08ec2a6526cad973f80123943b863ba9f30b45666000000000000000000000000000000001754caabe499e1ad04ae65d696507096939dc826578db55738e5024601eb052a9fc15f20b601253533847f79a5f6a6ae0000000000000000000000000000000006e340bc57495a5c01bd44eb6dee60e94feadd69bd0274e7c9755f7b0e7b4e59eb70a2cd7e4da9d1a5f60d93a5df19080000000000000000000000000000000013d7c393a2191ac8d13a0743fecd768a7e15d279be409ccea1d58ba39e91f592b425955ddfc8443861a2899de02cd0fc000000000000000000000000000000000ddc7df1bb36d54beb969a244a67c3ae87cab2eddce9397869421999497ab00a3e0ee29e384f3182b52158304790b05c0000000000000000000000000000000006f527de4412dd61845ab1e4536a114c7ac2bee2f3d22c16c660b3189b1666849f70462d6d650846331dc630dfaa075e0000000000000000000000000000000015aae1fad9e6cb3adc8bd93c432c9321a9d2f7cb961671c8e517da7024d1e35b519a2cc662d795173441479fa35f2e830000000000000000000000000000000008485999f40a4a363ddb3da273f7522344f284fb5bcee383a590c7c1287baa10f21312428d6818eebc96ec59d716fae1,,,invalid point: subgroup check failed +0000000000000000000000000000000015845de9692590d7fbf4187b50f4b2d067983b0a2209ed2bc6d60914be106decc5dfefba112baaf98ba3bf9e4d102b660000000000000000000000000000000004f2ca0858d056f769bc8e6ebf7cca745ca647ba497940b25b31c0541297626cd26ac10f8ae8476b5c868a95226da290000000000000000000000000000000000b1374a47c7c1c833f3856b0fe5ecaefaf2a8f96148eb540482288b56897d9e7e4269ea3a2c3742993b751bd9e484f2d000000000000000000000000000000000bc7fadac70d0a401e61683562cc83ffe107924ba1788bb6e06b0c60f22de0d93b10b63afcca343cad0572209b03b12b000000000000000000000000000000000c22c75d826d2700a8bad4e9c271d8b505ab2911dc257909c69dfdde2bcf332e5f13592eccabf578f48f6078550c1e9c00000000000000000000000000000000057db54159019d1e291131d28a936ac1337f2884f0c4bfc4d8adaa75bc0edf8b0f3030725e33a3d1a2e7e9ea39512fc70000000000000000000000000000000000232940188006769a382a4958383aa6702b2cbfb9c2907a989938ac618f23e241767b021e8ae11c23617ab393d4f85a0000000000000000000000000000000016a672061fe76ed943e36b2d6fa4aadf579db96eba5e4c60cda2884ddcbb0f37668638a3167d8858cd296917eaeff8e0000000000000000000000000000000000b1374a47c7c1c833f3856b0fe5ecaefaf2a8f96148eb540482288b56897d9e7e4269ea3a2c3742993b751bd9e484f2d000000000000000000000000000000000bc7fadac70d0a401e61683562cc83ffe107924ba1788bb6e06b0c60f22de0d93b10b63afcca343cad0572209b03b12b000000000000000000000000000000000c22c75d826d2700a8bad4e9c271d8b505ab2911dc257909c69dfdde2bcf332e5f13592eccabf578f48f6078550c1e9c00000000000000000000000000000000057db54159019d1e291131d28a936ac1337f2884f0c4bfc4d8adaa75bc0edf8b0f3030725e33a3d1a2e7e9ea39512fc7,,,invalid point: subgroup check failed +0000000000000000000000000000000018611593c7663a36330e0640bc912221a17d0ec9d2a250f1701303249655c7088bdc07b024878a260753d1dde306fd4900000000000000000000000000000000069d26308af5907c15532f31dca8c884b9e54a0da5e428c66fd79d980774cca106e2ccf3f93fe3e01669c594b9770a800000000000000000000000000000000001a38d296c4b7b8351164b935b915c08caf6af9d5233ecfe609e4ed855589bdbc9fb0adc55bb5cc6a2526bd82ab9287f00000000000000000000000000000000184ac28f62c7101bec49879af5da794740f9ba99afab4fcb576fa1149f3b701079915934c624f022b0d3213adc884c2c0000000000000000000000000000000004f64835227f459e76aae3397dfe53eddb1e97c8afd8beaba09382fe79ab378c3f03d6962dfee823c426cab426e51d2d000000000000000000000000000000000577263fd875f6388b723f6abc78aa3b0cc2e6b0ab53beb59286e30d1e982114c161fc0ef490bb1347fd8a3f3cba72710000000000000000000000000000000018611593c7663a36330e0640bc912221a17d0ec9d2a250f1701303249655c7088bdc07b024878a260753d1dde306fd4900000000000000000000000000000000069d26308af5907c15532f31dca8c884b9e54a0da5e428c66fd79d980774cca106e2ccf3f93fe3e01669c594b9770a800000000000000000000000000000000000c072a812b26927b5a672359032e71597002d8c45572db6c575e25c81181a522ca304867b1bcb583c58b2ad6bb1695d0000000000000000000000000000000003c4f5f548f50e835f402105cbd315081e0e8773dd91f3874687ace6fd5ffa66b6ebf6dac4580357b870f8835ed15cdd000000000000000000000000000000000f039e2e73334386b28ed4cc52db09b69c942c0c87f81328a9b7fbe8553eed48a60224ae9d52baf4f62a3fb0d58d451d000000000000000000000000000000001974da8867204f048b81d0c7a90d224dc5b87f3c4f47d1dfb09afc292430bf51d69e3538fdd13ca0749dee76c2ba9b17,,,invalid point: subgroup check failed +000000000000000000000000000000000754f3a9ea93a01fa244ef6badeac64fbb4dc81d3489c4195a01148e268e2af46011e6c593b4b873fa1470eecc6f79ef0000000000000000000000000000000018043830aa55a8c7efd5dc246622c71bbb4bc6a5d69cf594f46f62d8c3e2a5d4ba1d3990b5445f8b446e404a00259a8a000000000000000000000000000000000e49e94cfa35d8ade2b76865cc8be04737d00b48b195078c8085cbe782232a544cdb548373bd8ad0282674ba5c96fe0700000000000000000000000000000000047d59661f095c41bcc27da5f260f13a3fce334bba216b45df548894bdebc691fe779ccd63d99a9872973ab165a90c01000000000000000000000000000000000772e9a9c22bc7352fdf74915bc464de99ecd96420ef1af6e8bd5a05d73fff89c78e28eb340d4967e906f28afe1320490000000000000000000000000000000018bccff27bf9d7cb2159b9f2d1faabbf8591b53ca8e67e661d9f44f6dba6296e3e46ac32c50128bb5fb076cb8f214e27000000000000000000000000000000000252149178c606d2d6c0311e9f4a66cf348869efc09ec887cf99088ec754c01551796aaf168dc1a09cb741ab3c9d6891000000000000000000000000000000000db7baeeb5acfb22d680e032965a4d417b2f2f6717d3667d786e006327140c1288ff44842142eb1d2730b3be64fcf420000000000000000000000000000000000e49e94cfa35d8ade2b76865cc8be04737d00b48b195078c8085cbe782232a544cdb548373bd8ad0282674ba5c96fe0700000000000000000000000000000000047d59661f095c41bcc27da5f260f13a3fce334bba216b45df548894bdebc691fe779ccd63d99a9872973ab165a90c01000000000000000000000000000000000772e9a9c22bc7352fdf74915bc464de99ecd96420ef1af6e8bd5a05d73fff89c78e28eb340d4967e906f28afe1320490000000000000000000000000000000018bccff27bf9d7cb2159b9f2d1faabbf8591b53ca8e67e661d9f44f6dba6296e3e46ac32c50128bb5fb076cb8f214e27,,,invalid point: subgroup check failed +0000000000000000000000000000000003455a16c1cf9a408bf17cbb0b8ec2a5f24ba41d5b8a06a10750797f3371bcf361d3b6902d73949df3a24f5a8b9977c10000000000000000000000000000000016480e13653604d05f025b8264fb35a2cf06dc6a90ec7751ed80ee81cd064864655d133ce398e293c289a572dd98605e0000000000000000000000000000000015015aeb1965917cb5b55092d7eeb54915e21fbd5b9a62530b3dd5b8ae07d6f491df46e1987f565223a83cbc90f91735000000000000000000000000000000000658266a6bb01958b791b288ea9f5e138316724398218be522bf816ee5b5b34ef4acc83b82959f52792af6940816bb41000000000000000000000000000000000bf8d18b55a57e67c76882f1a1ad845480196f28556ef569a6a6054426bfa39459ac030b594201be76968cc33c301dd4000000000000000000000000000000000fd8b264f9bd71e00e3987cd221d2e9fbbee34ddcc5c563f02dd150451050bd20b3bd3a6ce1284fb0ebff0c6c1318fa10000000000000000000000000000000003455a16c1cf9a408bf17cbb0b8ec2a5f24ba41d5b8a06a10750797f3371bcf361d3b6902d73949df3a24f5a8b9977c10000000000000000000000000000000016480e13653604d05f025b8264fb35a2cf06dc6a90ec7751ed80ee81cd064864655d133ce398e293c289a572dd98605e000000000000000000000000000000000c5c8e759f71292c8b25dca51bfd40daec58d2d2befe991b27993ae32489b3ef70c0c3f873b3f47ffb013fd31732f763000000000000000000000000000000000a78f4e402668544cada859953182f14421c54446c264312daa5f27cb18a3955a277e5620b0f28f4f9bf233c49f3341f000000000000000000000000000000000e27d9b1bf12c01ab05fa5ed5b2e70444c0582aa5b430d0e10feb69dcddddadeec88c024ec87e23737ec1385461edaad00000000000000000000000000000000065984e81590e368aa6de051129761e94ca218df58ec0132ec22aa7d4128b9ace20e7da35c56a674ed1031d202e9f313,,,invalid point: subgroup check failed +0000000000000000000000000000000005a54ee5e3dc05c38ade7a42c71baf5a1467938f97c0cdf0742441cd339f22542b1ca6cd215d385b3fd6ba74ec996a520000000000000000000000000000000005f63d18f8bbc1c7b119ee0d58b688477129b2558be0084865297fe119224aec83b3633a646a3d423029cb52f0294aa20000000000000000000000000000000015e2547357626e6160105e5254d8deb80155c42d7b0c13bbe350c3395317913ccea5db61494aa2634857a8c83baa42a0000000000000000000000000000000000629ebc8d1798e2f9280493d2de7c159c558156782487d307ba358fd2bf696c29518d6cf2f975509bdefa89033f1cfa20000000000000000000000000000000011e3f568b9d1793519d5a8cd3bac7cf35091665f981ecb7a9e942f630c5f18fe7cd9747ff539816993b70573410410ac000000000000000000000000000000000889dedf6f29ed9959d8eb7276ae6122fec5a1bfae72c793902e1e3062be444b89a95129dd59f74ea0849b5a2aefd48b000000000000000000000000000000001963e29f92f6f72be2afa4635221b0d2f6afe9ada4582bd7ca4b77eb77fc4503578f38fb49aa1838751db8cf1ca0b0cd0000000000000000000000000000000009856a48f12966554afbcde1971499ee3ae40c9c5c3aef13bc415fddb97545ed84d5f50d2a26b9c16c4403a487dca6140000000000000000000000000000000015e2547357626e6160105e5254d8deb80155c42d7b0c13bbe350c3395317913ccea5db61494aa2634857a8c83baa42a0000000000000000000000000000000000629ebc8d1798e2f9280493d2de7c159c558156782487d307ba358fd2bf696c29518d6cf2f975509bdefa89033f1cfa20000000000000000000000000000000011e3f568b9d1793519d5a8cd3bac7cf35091665f981ecb7a9e942f630c5f18fe7cd9747ff539816993b70573410410ac000000000000000000000000000000000889dedf6f29ed9959d8eb7276ae6122fec5a1bfae72c793902e1e3062be444b89a95129dd59f74ea0849b5a2aefd48b,,,invalid point: subgroup check failed +0000000000000000000000000000000010df7793a66234599791ae07db9953bba83492389b150a05063105c191c6f32559b9533f1875ed154fa813586e84d0c40000000000000000000000000000000018de32e27e5c97b8b39380dde927e2143bca5d5591d770b2a7a77d7b59bdd533f04c41aef3a5a60df55ed90742869b7400000000000000000000000000000000182f0aa672674c27d8f3fbcc0fc7c1608c01188cf5c28b8ac08d6f99a4e3e214aa3ba61a19607b513b4d01f1d4424a990000000000000000000000000000000000b47be5b5249eab6f67aca9c9349d4a83956550cd21856485132c26e3be3ca133050d79507e2e8cafb67b44a7f4b4da00000000000000000000000000000000060efe7e7a4ca52063b49f6c839666deebe2e8e563de18b210fb477e86420aefa38f89e926cc41334e80f4d47d810d97000000000000000000000000000000000c2243c2a34286b146462a643979a72e75f7ff31f9f043164a5514d3e5da8b0cd891e97af2dd3d6c6f3584b390e5faf60000000000000000000000000000000010df7793a66234599791ae07db9953bba83492389b150a05063105c191c6f32559b9533f1875ed154fa813586e84d0c40000000000000000000000000000000018de32e27e5c97b8b39380dde927e2143bca5d5591d770b2a7a77d7b59bdd533f04c41aef3a5a60df55ed90742869b740000000000000000000000000000000015f7e6dbb904f4f1fbef282667d77c846c0dac6d78f4daaf32123b4326f1c6e42b15cb06ed7b3b46c8877e684ca7f9de00000000000000000000000000000000004a87f0ef3285709a3ded240f529e8e10991a82c7fb40de0bd256a9fafdbc212eabb8121f52c6bf67a45bf36246921c00000000000000000000000000000000156a1d58dd64734149b1e37b1b69fa4ea4452c40d2d041f5cf3de3adadf3bfdf433626fb96c46f9104b1c16114108599000000000000000000000000000000000fc3a0e58ed3fb583e2e1c3b0db5fac2a6d75694aa3d0732243b5a75688fa0ffb5fc9023545b9585df224ee9f6c5d171,,,invalid point: subgroup check failed +000000000000000000000000000000001639642196e9d6d720e17ace198232d1c0a7c05660c2766b9d28147504308ee48d949755ffcd1c95e024fa299657c8d10000000000000000000000000000000017a5975410b3a80e339b200ec63d7b7d550514653726e3ae6a97a383545118bd4221bba3e27922a826057b244ad025f30000000000000000000000000000000017aa7a3f1ebbdec6abe12abea12ef50a3daabbf96a5f2ebfb517885f0b7aba1e927c682b15521529cb9e1f87c59be99e0000000000000000000000000000000016e23f7effbb9dd34ec1f6974115e7f0d23cc4553d86e6d61a0c98f47d09510e06b3f987c5bcf4bc30e20ae9684da74e000000000000000000000000000000000f3905dd4f99cfcfa6152db53106b4d1f6e24518a822da9388d8ca1dd654a4b8315697328571691f105d1abe9aad3dae0000000000000000000000000000000006bfd10d33df9326a55b35aa6d2bc3e831d4c3b5959aaa35613156e5e19343b74e34ed2670c43ba1a45cd3d91f055c9a000000000000000000000000000000000024c53fb66f77329f70394626073ae298c6aaba115aa6af7bdaf3d2fb74a07441d46eeb398feec036727e86891db2030000000000000000000000000000000016b96c27d4342c47caafa584ec9847c79870eaebcce158535d8da95d7a847ecdc5057425fb3dd862303d1ac03162317e0000000000000000000000000000000017aa7a3f1ebbdec6abe12abea12ef50a3daabbf96a5f2ebfb517885f0b7aba1e927c682b15521529cb9e1f87c59be99e0000000000000000000000000000000016e23f7effbb9dd34ec1f6974115e7f0d23cc4553d86e6d61a0c98f47d09510e06b3f987c5bcf4bc30e20ae9684da74e000000000000000000000000000000000f3905dd4f99cfcfa6152db53106b4d1f6e24518a822da9388d8ca1dd654a4b8315697328571691f105d1abe9aad3dae0000000000000000000000000000000006bfd10d33df9326a55b35aa6d2bc3e831d4c3b5959aaa35613156e5e19343b74e34ed2670c43ba1a45cd3d91f055c9a,,,invalid point: subgroup check failed +000000000000000000000000000000000680d1062d24bb96b09d9dc9791364b5138e7c36c163589f919354101459de2fa76440616351d1d9bcd961673b106684000000000000000000000000000000000ca650f50b670befbf16d65b486e5c98dea6857862cf23d7bdd2dee2abc0855273495b047431ed03bb1c72b5403c2a4e0000000000000000000000000000000015b2586a23d909e6fd7ef6e58595817bec1389faed80db6d59db219435e7fb1b6492178a849c12bf6418341529d141330000000000000000000000000000000013ee3539c49e0c26e78f46c67b1e3993eed56c72dda43936b419e1340a3aa223ca09a2dca3ca56f2f9578b4a3f885aa00000000000000000000000000000000018e5fd242eca2314b3ade4a1e913177a499d72b539907839c5025b7de69efa24b08b3eb1e85fd05724db82b29edac344000000000000000000000000000000000478706e91d6213e4d4fd9a6c5051c88d86c7271aed7c74ef3b43e904f8ccfe4108f94660807316e8f1eabb85b734d50000000000000000000000000000000000680d1062d24bb96b09d9dc9791364b5138e7c36c163589f919354101459de2fa76440616351d1d9bcd961673b106684000000000000000000000000000000000ca650f50b670befbf16d65b486e5c98dea6857862cf23d7bdd2dee2abc0855273495b047431ed03bb1c72b5403c2a4e000000000000000000000000000000001600e44d53c706898736f5cccab585af5d04f7da91cad6f97b991b51adbc22ce27744f12c0a24804b6fc3dcc53011a59000000000000000000000000000000000751b090922b29f5c299340b12a56a77fd9c32f27995a59cd032cd09ead834d9faf5e151fbf7a0d810738de1beba5b4100000000000000000000000000000000114e35fcef45e87312a90fca21fef50c46b8a0f114df5c67ac9872ccadf858f319977138f03279ddd1edcab4602838eb000000000000000000000000000000000145c6cd707efd8d271dda5b9af26173e337a169c01b28a44f5d4ad06b125a05e867f0b1f873bbc048ea6cec06967c33,,,invalid point: subgroup check failed +000000000000000000000000000000000d6427dedfdcd624c896ca8e1ef717e212985ae23a4f830ee466c75b37ea2e994e7653b9717928f1be4583aae73f70040000000000000000000000000000000017be03dd7c9c14000aaec774812a8d8bc4aa2f1ecca9a894fd1385864b28a38091d3fb5706ee7c36086c7d50e35eb5b9000000000000000000000000000000000ce359fe7d997e151b94af2f5e167aa4834caf5a07ff056fe049d4b2c2780b35e8ecf9426444da4725a3e66de6691d960000000000000000000000000000000004c7ff987f866ff3919fb4769cc704928af09406c8f5a39e6fdcde5f4ef8a188cff406f853261bd3abd0f67c6cad1f3f000000000000000000000000000000000914584031ca57b9b0bcc35fbe76d967aee164b5eeeaa5e29c02901194fb0f88f5a249040c37ab47a715d34b2329a2b30000000000000000000000000000000007a42352ff521b8e6267a5d0dd1eadcb63db1fec68cff31bee1b2080b451ac731caf0efb86758b26b0c78df5cee8864800000000000000000000000000000000141d878adfaa6a3982cd0de93b4d64ba840a07c026ca443d6d4c2b6c36cf882e109d80df63b1626c112f9a89809788080000000000000000000000000000000005a5888d22a2f654a58d9a03c68d59cde9ab5e5356b2288033ba58fe2dbacf533e59344bdf30eed07698261d6269fc70000000000000000000000000000000000ce359fe7d997e151b94af2f5e167aa4834caf5a07ff056fe049d4b2c2780b35e8ecf9426444da4725a3e66de6691d960000000000000000000000000000000004c7ff987f866ff3919fb4769cc704928af09406c8f5a39e6fdcde5f4ef8a188cff406f853261bd3abd0f67c6cad1f3f000000000000000000000000000000000914584031ca57b9b0bcc35fbe76d967aee164b5eeeaa5e29c02901194fb0f88f5a249040c37ab47a715d34b2329a2b30000000000000000000000000000000007a42352ff521b8e6267a5d0dd1eadcb63db1fec68cff31bee1b2080b451ac731caf0efb86758b26b0c78df5cee88648,,,invalid point: subgroup check failed +000000000000000000000000000000000da87318eb51b90ca822bff1df4dbc040fb1d74129242d832e1096e813dec5d91f950f44bbb07980dcaaee3366f03a0c00000000000000000000000000000000157d5f5c8ad06af803b9362b22519a23def6dbb700db517c85a663bf1bef9665d6e81e9b02ccaac97f0940d223b83ac400000000000000000000000000000000176835484cf24c47b154b7c35877eaf5194e0e1d8f053842fb5ff8fa833dabebc887f3d34b825fe9cf2c374a2066124a000000000000000000000000000000000d31805157ecafb751536c484fd0c81664de9524a1420c969d54260dd5264bc5454a3234d1e5b090bbb8ee1066b685ee00000000000000000000000000000000196b4f58c12a7d7ac4d720cf9b6c44efdab88e06dad0023a01572cc2ba7bc0a4baf7fa45c06f04ff3d067ba191a84e6000000000000000000000000000000000038cb5d328ac9d1fab9c402b8ed9e72ccd462ca80075132f6be141457ec25a6c84a15e42b78cb64cf05ef18b003e4652000000000000000000000000000000000da87318eb51b90ca822bff1df4dbc040fb1d74129242d832e1096e813dec5d91f950f44bbb07980dcaaee3366f03a0c00000000000000000000000000000000157d5f5c8ad06af803b9362b22519a23def6dbb700db517c85a663bf1bef9665d6e81e9b02ccaac97f0940d223b83ac4000000000000000000000000000000000065c10395b93e8d04f5eb67d8e06e8649139d261ad8fbf5ff2c7d6d364c87837fa8e744834ec9341c714318195896770000000000000000000000000000000009fcc05ee486d42c3b2d480a309e4bb19563f7a27b4a10182ccb2d233ed42943ba472681d1f847249cbd11e4d79ea51f00000000000000000000000000000000053a516998d7c2b2bfa70349bf3f5e3967df827f65044634071450761ae8860e893824b1ae3f204b0ffbf8b091ddd277000000000000000000000000000000000d7cd03cc2cf97a164c7dd65b961df2866e82bf6fa979e56d0ca3f9638319772f56eab2e2134a33515dbcc137da8ec8e,,,invalid point: subgroup check failed +000000000000000000000000000000000be4cb58fd1dab8fccaa410e1c301be4fd2e7bae95cc1717d2aecaa705d717c67d7f20611dd1403d9350798642fa021d00000000000000000000000000000000075100bfbdb3f6271e5d8bcd4472580e56fd507b73aef3c3c5084d77e11a61b69bea0b85ba62885f7da36d223fca20760000000000000000000000000000000007649efeb3e0bee49b9adb13f8e5d7db1c06d7fde08a3f3082194153bf4b3615aff1450e47fae88ac93f55a389a319da0000000000000000000000000000000008334731582fb1b6125d7ee1da0124fe88f0c70a0a3f6188636976c31ba6a72beed927fe598386f328e4ae534729a57c0000000000000000000000000000000010b57d80fce5cdc90bc93b3bc7a1affadd19fb00aeec2ca9a6287bf4e40fb74616986a44f2f7d945f58501a965f37f3000000000000000000000000000000000180dcae46ee41bccd422b3cc2b34cad26f6816dd08ba51b2f12835e7439ae2d46933de28ac04bbcad68a188e7e90ee8d000000000000000000000000000000000a869358fd3d64849fd62e513db8fce1ab2618d3524acecbd04fef6b8c77703258cc557587f316cbb74bc5af5cb5551100000000000000000000000000000000059eb0e90e0910c24ee2145921ccee83707d8f89a188dcaae7d5c75b7113cacff92a2a030e67927bfec0da39f2bf65ed0000000000000000000000000000000007649efeb3e0bee49b9adb13f8e5d7db1c06d7fde08a3f3082194153bf4b3615aff1450e47fae88ac93f55a389a319da0000000000000000000000000000000008334731582fb1b6125d7ee1da0124fe88f0c70a0a3f6188636976c31ba6a72beed927fe598386f328e4ae534729a57c0000000000000000000000000000000010b57d80fce5cdc90bc93b3bc7a1affadd19fb00aeec2ca9a6287bf4e40fb74616986a44f2f7d945f58501a965f37f3000000000000000000000000000000000180dcae46ee41bccd422b3cc2b34cad26f6816dd08ba51b2f12835e7439ae2d46933de28ac04bbcad68a188e7e90ee8d,,,invalid point: subgroup check failed +0000000000000000000000000000000010eeac4d171a17d607dc544c559226db50d40193b435ce7528086eee21ec437e986c89dbe05931083768221e4bf06ede00000000000000000000000000000000140ef3af9f3dfe760e8c9dbe8d24abecfe611699ad337a97481a1553e9cabdb2e8a8cb48bc032bd02738cd26cd1388c300000000000000000000000000000000165bb8a97dd4b60ed7fa432f019f7f09a19c8e7a9b70e7370ae668d4597a3cf12c06fe062d880611e34ad9e586c193c00000000000000000000000000000000008c684f30de5c67f675e98400d854397e8cc6a139dca7e9ee179309a9617ce0ae034bfbd0faba7a2f9e7ee39de8770c900000000000000000000000000000000030e524c87a658e44df117fa0a877afcf8a4907979c932921a631a209dd58ddcaf693c7321c537e7e2a5adafe5761fa0000000000000000000000000000000000cd44b77f2d92706b3db5e374f13f6f12e3b030c6341d31e1c55d627e6af06a1b64498e590dbff08ee6354902263ff260000000000000000000000000000000010eeac4d171a17d607dc544c559226db50d40193b435ce7528086eee21ec437e986c89dbe05931083768221e4bf06ede00000000000000000000000000000000140ef3af9f3dfe760e8c9dbe8d24abecfe611699ad337a97481a1553e9cabdb2e8a8cb48bc032bd02738cd26cd1388c300000000000000000000000000000000062e54c21986cff68cd57903594d0e9f2f8348191aea6abc19e8b895e6ca59bf2eb731d10e426ad98726c51adc2d53b4000000000000000000000000000000000594d2a92e0b979c95daf6f78216be8c33ef23f0bebcda479326a1d63ec8234b283ee29fff7fccd441ab4ea6e17371a40000000000000000000000000000000019179f35ebf4ad9f8f9dd577b2db1ed58a988954b4bf4232301b713809be318e746f5b2bd663a21de755125f414bae9700000000000000000000000000000000172d8ad43611623865bff86df2bea58a02b7d6a2c41b85b98d6a2bd4f5e1bef25c978ac0bbb7f4746297c6e0e40b4e23,,,invalid point: subgroup check failed +00000000000000000000000000000000054dce4bc0b703b8957539c594d8d443fec161c3cb2f806f8eaa8158a665d84cfd551c0b7c0a08bede0cbeb780a6ca5b000000000000000000000000000000000cb3d3f9bbda28f8fe597907a76a8250567f4e481b6e9409e03ead60eab77153cf8f25ffcebb243a310094740cc2e2a9000000000000000000000000000000000a71dc159647864abd64655bf5ef956f21ad55529bdb49ac910ef628cc62a3d43b2b9ee26180232fa29f4b0e8371286b000000000000000000000000000000000c72d0fbe0a7604c9fab394b285ebf1c322c95013651bd21f88865e269eafa65e135ff90f5b249a794cef4e6cfcb56270000000000000000000000000000000019ac0043071372ba077bc8d91a4ac80fb5b8c8131981c4dfc698ba9ae50b506f93149eb73e4bc4f4ded94d6824473817000000000000000000000000000000000113368be2a531d2958d887c046fc26155436fc6a1ef44fdf16447163b7bc48fbb499506d8d5c8041d21116c4f22e685000000000000000000000000000000000b7244995b7819857f716288dc59eee9ba5ac7bfe010937ea0b67ee71388a3792e5b7feb6890a436db4f1b26df18b38c0000000000000000000000000000000009a0b73360bc0ca3b632c0116f21ffdaecf37e4d6c904c98d6225a08d7caadf5024ad6b457cf31b924118ea147ff10fb000000000000000000000000000000000a71dc159647864abd64655bf5ef956f21ad55529bdb49ac910ef628cc62a3d43b2b9ee26180232fa29f4b0e8371286b000000000000000000000000000000000c72d0fbe0a7604c9fab394b285ebf1c322c95013651bd21f88865e269eafa65e135ff90f5b249a794cef4e6cfcb56270000000000000000000000000000000019ac0043071372ba077bc8d91a4ac80fb5b8c8131981c4dfc698ba9ae50b506f93149eb73e4bc4f4ded94d6824473817000000000000000000000000000000000113368be2a531d2958d887c046fc26155436fc6a1ef44fdf16447163b7bc48fbb499506d8d5c8041d21116c4f22e685,,,invalid point: subgroup check failed +000000000000000000000000000000000cc6bbb9914ae46b57eaaa8d3d22274a355bd7488e5b537169c995ef2bee187ab66497423f14fdcd01373a609981b3ea000000000000000000000000000000000037d9461da369d186cd812a9ade7690b2b8b54ae386b7342a69af832ff4f51e5db9baa3c6b4a65d798a1aeb41d8787d0000000000000000000000000000000013a6e129d4dd4aa93cff5489ee879763e2a2231939e609d2d72f07e630b37d09f3057a36fd5cdfc9c81675c996f8ba0f000000000000000000000000000000000e8d7ad082e8f9a718fc2ea712853ed9ab4e8b1a8ca9988f77c70fc759f1fe2d4bd73696e539f130be13b2862efbdf770000000000000000000000000000000009897223b041568c9ef2884baa28477241e525de05f2c2f15441854a0e8660786a0c7b85a6d9d1074fed2b44d75efedb0000000000000000000000000000000007b52401891bd8003af4b07b04b15b79bd05fcb54739491352d295b5545ddba34da0b0aff36a3e7e4b433011be580174000000000000000000000000000000000cc6bbb9914ae46b57eaaa8d3d22274a355bd7488e5b537169c995ef2bee187ab66497423f14fdcd01373a609981b3ea000000000000000000000000000000000037d9461da369d186cd812a9ade7690b2b8b54ae386b7342a69af832ff4f51e5db9baa3c6b4a65d798a1aeb41d8787d000000000000000000000000000000000cca0d111237ec521889baa4987714c6bb539399b058b6635fd043821377fd6cfdb74923610c8235afe2be99188cbe820000000000000000000000000000000007fa2b99221675b38204c2eea94b2378b1d711ea5ba4f41d35c37f77ee2466f22c88725da9fcdabb6153292b7cd9aa1e000000000000000000000000000000001069adc30f99e0ddfd39775cee5ddd786fcc077cbaa8737f7031745d02f06168fd5d3c4936704d15955bcfa08b0925180000000000000000000000000000000003b388a8d9baabf0bf708e2fe28eacd7f704bc588185adbcea8e0a2bb8f9bc9b045918d97bb27b2033c6722b6e6692de,,,invalid point: subgroup check failed +000000000000000000000000000000001055ab14a2407bf095a954cf1c926f2c520dda187c44522a7e924e38543e5b87e7642227821a4e0b3ab0289b32161a060000000000000000000000000000000018aa24044066526fa9ed980ae7b3110a4fde7ba0a5fd289803fa5175d30766f01a266917f821169c7ec31fd46e1a14ac000000000000000000000000000000000b6e16f2a6cb821abc43c447da207cc3013f2f750c844f42f0fdf47160a38501bf502073bbeb565122bb3de61b3a5ab800000000000000000000000000000000040f5f3aab5d416e9a084fa298814f894ba599315fe10af20f836e624680582413b4a54623cda8ae2663ee094e4db775000000000000000000000000000000000d32ac715a094813c7b46ce2e932365bfd62ec5e584e047b0c56ed6eca3c58268ae01be31b833be7ba5c2588ebb9859d000000000000000000000000000000000850b9044f129e51658a02cfa49d40a2b09239823cba4d8fe423fa1b4815750811daf745e7e02b317a7318aad0734ddc000000000000000000000000000000000765a76c441227592ba30d6b1d3d9898467352398efc0e8416e0be8c9f87bcac8d5eaa5d7b2a8adfae8303909bef28da00000000000000000000000000000000107c0eff2fa09afb743c294408408451e3039da8db8c0beef32f07864223817075fa557a89244cdc293d631311773947000000000000000000000000000000000b6e16f2a6cb821abc43c447da207cc3013f2f750c844f42f0fdf47160a38501bf502073bbeb565122bb3de61b3a5ab800000000000000000000000000000000040f5f3aab5d416e9a084fa298814f894ba599315fe10af20f836e624680582413b4a54623cda8ae2663ee094e4db775000000000000000000000000000000000d32ac715a094813c7b46ce2e932365bfd62ec5e584e047b0c56ed6eca3c58268ae01be31b833be7ba5c2588ebb9859d000000000000000000000000000000000850b9044f129e51658a02cfa49d40a2b09239823cba4d8fe423fa1b4815750811daf745e7e02b317a7318aad0734ddc,,,invalid point: subgroup check failed +00000000000000000000000000000000182197c7a0cefeb530f51c664dcf8a74f9f70165ffc416ba454e9c356bade393e30d037347b1a020dcefb09ee65590a6000000000000000000000000000000001030be8d38736ac8e555d1681b14f73f2ca58faebeaff17b6006bf7876e733642d229075c8dfb0a9ba4e832e384aeb8b0000000000000000000000000000000019094370a6f19e946f587e9b117332ce5ad91860cc103015e94c6aac6d2c00f3e71471c241ea1d425e391707b27b851d0000000000000000000000000000000009ad1d1312011907676574a7867ac02059d9b0e29dab709f6ffc1b75b3598658427f10ab52d1129417ef42c30998f55f0000000000000000000000000000000003103495c759d8901898acd98679d92e048ca41244782045a6d9419b3ff87c351f97a333899fb445b8620099f7b9cce100000000000000000000000000000000051f7aaac39348f70109ae7a016026ea52c03e4ec90d03ce05aeea74f66bbf82e17be35cc45f492f50246f0de8dc68c500000000000000000000000000000000182197c7a0cefeb530f51c664dcf8a74f9f70165ffc416ba454e9c356bade393e30d037347b1a020dcefb09ee65590a6000000000000000000000000000000001030be8d38736ac8e555d1681b14f73f2ca58faebeaff17b6006bf7876e733642d229075c8dfb0a9ba4e832e384aeb8b0000000000000000000000000000000014229a1108fcd75131295caee98f8e4e075cf4bb5e169024e07a533f65316cb5d19193d3cfee8b2216663829be6d374600000000000000000000000000000000156cdf98f622a393d920b200e6d9efede7413137eceb79d66f85a18e33ef6946a515737c58e198f877fa39458877b99300000000000000000000000000000000006e5cee8e0f47c0ee4a574fcca6e150901a7de58f3f2eb3480f1ff8c14effa4bb9d00837501f22f6cc465e4026c9d7100000000000000000000000000000000124b6c0836bdd10657a3e1f978b48b9221b1cfc2767b6b99319fb69c5fdcc1b133f1c2fd093c62d6d1e398f32c4e8b71,,,invalid point: subgroup check failed +0000000000000000000000000000000019c9b755000f9f1b6ff22885f45bc1f5f65d080ecc129d29e1cd60aa14fd20646643be51d2fb3417cbbd39361bc72b62000000000000000000000000000000001741fd3c4a7e883094c0e84d851f45cc1b81af5bcace67dfddd3f19e8817697a386d1965a4e17c60b00ecbff84779b97000000000000000000000000000000000e87ea967f6c4dd7135efcd9a59368a2d19dd1385aefa34d7d9bd7f5094d779a7150667dcec463c9ab63d2ffc8ee4f6d000000000000000000000000000000000a3a010f176efe1a7bdb77dedf6b6271c845d662dca5062ebbac4e9c3b8946db0adfff37a6faa3196a99fb3ef05f09c5000000000000000000000000000000000350ad257d47f270c4340e3cb124ce961316573dea14c9584d20221d922a43c2e94324ec14bd1e4a1eb955861783a8f100000000000000000000000000000000070edff58ac1f8c13f62327cf0adbd748285fcd84ed7be23dfc82a0ae32f8c8f5f6b0679f795874cb0082718fb07a1ca000000000000000000000000000000000d5be6f99bb9a2379d1e542ece048164fa5d14e0c6c459180717b3da46e8446e9def576635ac1124e1390196fe97f39e000000000000000000000000000000001482d8339b402e3bffe61aaa298c8bae4286f1fbfc877a66e21cfe239bbee383d701d95a6c2b8193d67df5a551bb7aba000000000000000000000000000000000e87ea967f6c4dd7135efcd9a59368a2d19dd1385aefa34d7d9bd7f5094d779a7150667dcec463c9ab63d2ffc8ee4f6d000000000000000000000000000000000a3a010f176efe1a7bdb77dedf6b6271c845d662dca5062ebbac4e9c3b8946db0adfff37a6faa3196a99fb3ef05f09c5000000000000000000000000000000000350ad257d47f270c4340e3cb124ce961316573dea14c9584d20221d922a43c2e94324ec14bd1e4a1eb955861783a8f100000000000000000000000000000000070edff58ac1f8c13f62327cf0adbd748285fcd84ed7be23dfc82a0ae32f8c8f5f6b0679f795874cb0082718fb07a1ca,,,invalid point: subgroup check failed +00000000000000000000000000000000104c749e3f7b40bf6df55f9414bd146ac306b46a6210ae4ceff6fe2a58220ddbc69208ada5f692120dcfce39b1e43fb5000000000000000000000000000000000663a0e62ea68ac23a6e27958baabbb5deca3905aa138a54d6198724e5fdf0abb9288cdb52cf1d44e93f06571a654f75000000000000000000000000000000001116ecf077865395ea40fa9cf05753b87ac29ccf9ecfebfa1031fef0defa1d77634c2177647f069532e00f7fb657577f0000000000000000000000000000000005c7960dd84874fc00ab199d00e8bf1ea035a7eec443328bf2bc28d0006979f5032763a4d33f031e698895e03b27314f0000000000000000000000000000000004e00e32a506bff708c51fcc4101c8ebe7f1695d6a4606b6648b04710fdae313b99219963921451d0fc78dd59970ea8b0000000000000000000000000000000019dc4b721ec4a4303809c47da68099fc10706eb08cd4f6f91641ac680661e93a91e2067a84c12f9f55f84e27ed76ae2700000000000000000000000000000000104c749e3f7b40bf6df55f9414bd146ac306b46a6210ae4ceff6fe2a58220ddbc69208ada5f692120dcfce39b1e43fb5000000000000000000000000000000000663a0e62ea68ac23a6e27958baabbb5deca3905aa138a54d6198724e5fdf0abb9288cdb52cf1d44e93f06571a654f75000000000000000000000000000000000da3982205a45000b16e1ec7a48effad4ae1affd4acd8bd13fcdf2bf05b6845ebda9be2df6d6325389d711111641aae500000000000000000000000000000000150c1bb67fe3d88dbfb452d5b4582d9a1c350ac01cc209740be70d63e266c926cc6b0171eaea913b7456daf595b83ce900000000000000000000000000000000138d0bbb52fb6248731c8fbb6818d1379fc5c2549a5a0d663a56c41b3b2e8c7c4fd77830c455a40e59aaa65124ebcee50000000000000000000000000000000015e6b4628b75f9786ee26e41cb8b86c6e6a97ac18aa7662b39e9c96e169a3192b64b863d7f9739237255fea6cab12fcb,,,invalid point: subgroup check failed +000000000000000000000000000000001638395680014bc04e2ca42bf864dde47a0d708ae81ba4a6aa2e2476837750aaf5f9f6e41a5a23df432ae92fd221737e0000000000000000000000000000000009419792539e0ae995b8d853d9ef513bc54766475e37bb3dc2dae3d7fb9b02b0eb2327f24a751d2de344b9f5131ef23700000000000000000000000000000000197ff997d6c5efa3d7de8e16f26082bf13a2401d6df5f5c33c6614c36105f347e40216c907bdad9c1df6ebbd44f41c3f000000000000000000000000000000000f27a0bf92329730d776a83583177993b2b354a212a9c004f9f8892a750c477b8d1e68c13127f03b1629bc8392d06f5b0000000000000000000000000000000011b239cc6914a321385d907527b85713a0d842f5be80752f4c5758586dc1de944b6e4578bbe324f16838115e9c866bca0000000000000000000000000000000000cf93c5b48cd9de51ccaa45124217cabf466d07d6fdf4a7bb810443339ec4af5b74931bd07eb9fd31c284c05f3f539e0000000000000000000000000000000010b91e082484fff0da28b06f06e02c699d741f2ef788250e3fbf2ba8fc1d7d78a1ca63b76dadfb71015fbefc0eb70eef000000000000000000000000000000000c2fe842c659c875af0f2cb1a978ac9058981cc6c76ff057f326162d4322805974505e6a35499bd0c58b5d6db3aa222900000000000000000000000000000000197ff997d6c5efa3d7de8e16f26082bf13a2401d6df5f5c33c6614c36105f347e40216c907bdad9c1df6ebbd44f41c3f000000000000000000000000000000000f27a0bf92329730d776a83583177993b2b354a212a9c004f9f8892a750c477b8d1e68c13127f03b1629bc8392d06f5b0000000000000000000000000000000011b239cc6914a321385d907527b85713a0d842f5be80752f4c5758586dc1de944b6e4578bbe324f16838115e9c866bca0000000000000000000000000000000000cf93c5b48cd9de51ccaa45124217cabf466d07d6fdf4a7bb810443339ec4af5b74931bd07eb9fd31c284c05f3f539e,,,invalid point: subgroup check failed +000000000000000000000000000000000ac27e4d19924f4bfe30432554f25d456cdb4724c106409e46612e1c91e8cf5fc2cdcd6b6fd6bfe040e910795441befd0000000000000000000000000000000007e9227d849e467fbf5fadcc016dedcc04f4c66f23464195782746fde628a107d77ca5b5c9bcc8bbb14fc14208fa5de300000000000000000000000000000000094860f23d182a14d1a64d9693ce9309ef4e775f24aa3807571c9b8281fc0d6157cdb5a00b34b66be1849994c264c4b000000000000000000000000000000000062b4a3ef95b2522c894c0b492673c3800fdf8645998a899e27dc3a23c0530d96b558d1c6364477943726740cdbc88f0000000000000000000000000000000000daa2f2f2c1020339666be4b1c1e12f8d44625a9508bc5590314789d02fe0e2e676d8d240bff89b669b9290fe1d0f8a8000000000000000000000000000000000f7a710af0b04d20b7d515f2627b572a5a17a13975ee81bcb8fd90600d5fb2f161a9ab3635bd16649c95385bcd604f5f000000000000000000000000000000000ac27e4d19924f4bfe30432554f25d456cdb4724c106409e46612e1c91e8cf5fc2cdcd6b6fd6bfe040e910795441befd0000000000000000000000000000000007e9227d849e467fbf5fadcc016dedcc04f4c66f23464195782746fde628a107d77ca5b5c9bcc8bbb14fc14208fa5de300000000000000000000000000000000055d8c63d7c04bf5db81465f2fc372b798d77ab0ecf795bf57debeafbbc8998f91f71b0dbcc440e70df3d5a1cb682ad8000000000000000000000000000000001497d9519e835c0644d30ae38ee66faf39b1939320c2e0a45b7862508ea3bd7eaa3a754a679bff81af26c6aa141adae00000000000000000000000000000000001be6ce3109582f31e02051ef0e4d266f310048e04a7ac8dc5e04d2b7f2766440f1ae63e5da6dbf831b21fd7cb9cc0a80000000000000000000000000000000003d4acbd20192ee2fc55acd5c90cf5b897cb42a4c0a777970d11955cdf11d5ab22444ac9cfb666c3e509ce832cef219f,,,invalid point: subgroup check failed +0000000000000000000000000000000015866ee89fe4f68e45155fb98124e8453e1ca25347d84f70ebfc32cf76c5d48e3a3e5ccfb1b505db7b493cfcc73ef92d0000000000000000000000000000000013deaec2d2482c457050256d157968ea3d15f9b61b4573353e83daf824b28289343bcbc3bf97ecec9d65ad08804861440000000000000000000000000000000013467fcb424ae0eb012228fd2083d92e6d242427670ca6e2cc1166166edee5a94b78d2c2f8715a996bf2b4e5112e49f0000000000000000000000000000000000c23c01e0061b0fc7579723e072b12e86c8f12f4c2a039bdc5b1f3384441ccefec187e0380efae31a819d92fd6462ce80000000000000000000000000000000014f9a055a5e468955f6d7485fdffed2b33174777f99d9d0af160b0a083912b05da45f35c73053120f61525c173a24e59000000000000000000000000000000000cfdcb6adf8f04fac2cba8f322339fb0614f46b77b0d91f0ec167eca06fcce080ee0e63023fb94712dbe7591843b6fe1000000000000000000000000000000000d90bd38049f2a8de869d8a748c9ff3120542f38fca6e8d5fbbff86baaabf0f19dbf449cf23c043dfea322d99837f7110000000000000000000000000000000000ede89c8bb8299726ec685765f10167c5b844e427d3c15da6ec2c1d97de174819d52caa96d5cc938e93dd09bbd1e0d80000000000000000000000000000000013467fcb424ae0eb012228fd2083d92e6d242427670ca6e2cc1166166edee5a94b78d2c2f8715a996bf2b4e5112e49f0000000000000000000000000000000000c23c01e0061b0fc7579723e072b12e86c8f12f4c2a039bdc5b1f3384441ccefec187e0380efae31a819d92fd6462ce80000000000000000000000000000000014f9a055a5e468955f6d7485fdffed2b33174777f99d9d0af160b0a083912b05da45f35c73053120f61525c173a24e59000000000000000000000000000000000cfdcb6adf8f04fac2cba8f322339fb0614f46b77b0d91f0ec167eca06fcce080ee0e63023fb94712dbe7591843b6fe1,,,invalid point: subgroup check failed +00000000000000000000000000000000119c7c85e5efaf08b91dc496758b962098cc0eb60f4a770bfafa91809ae4a95b43f96b69c8ddc897701487f22d2e049c0000000000000000000000000000000007467ac896ae9f7d2cfdfbab082c89d3c17a6dfdf1f69b4b38fe6d5ede6848a45e8b0d728eb8c68752ec59c8e0504dcd000000000000000000000000000000001047ce33c70d58e3191a558ce2fd95c20bb62abae7d924cec8a4067fb33e8dacd796d65c049be7bacdb969f61db5b26500000000000000000000000000000000096e7081a7b2377331f86d8418bd577cd5cc1d45e60d39b519ff2b3a50ddb2d5f6dccc0066167f42498a3d29ef5ce2e30000000000000000000000000000000011159939a04c129b007f2aa2d59ae006e8d89c41dd465cba551737d06d3fb2c1161aee98e86cb8c0321f42e514316030000000000000000000000000000000000c25d9cdc8dbeec82c47d5ef12f21a7e58a8eddc1e738e635ba04f2ebe12440090f432c0d1518217a5531266441f1c2500000000000000000000000000000000119c7c85e5efaf08b91dc496758b962098cc0eb60f4a770bfafa91809ae4a95b43f96b69c8ddc897701487f22d2e049c0000000000000000000000000000000007467ac896ae9f7d2cfdfbab082c89d3c17a6dfdf1f69b4b38fe6d5ede6848a45e8b0d728eb8c68752ec59c8e0504dcd0000000000000000000000000000000013a11383f2d3a3c28e3ea750fece5790e37f66b306ecca417c83840bed70c034e4b82b0850f719fb0b3b203a25dffae40000000000000000000000000000000017d067d9cfbbcf605c5da3532b2eda5900d71340508f08c05d0051772e65b0f85b9efe5b6d63a7b64b25ede8df7f25c9000000000000000000000000000000000e44847884ee8eacd5417e042e8299af8313ce177ecdd034a91d3bdd441437510808d44e328e810c46bd851ceb6085dc0000000000000000000000000000000013288506fd52bf37aaa975b533f1182a824b79d2d876ad6ff705efeec7f732bed99d2da8f31c00a2db4d97c4118bcb88,,,invalid point: subgroup check failed +000000000000000000000000000000000b7aa89ed719e2af5ad32ca923f1d2d52d767f6bd33d8967d2619b54472c8881ad06441b2595931d734a0fd10ccd7f190000000000000000000000000000000014bd6118d65e19e4cb79af164f523f1c80b0f0a0f0063cf1d28e11ae7987381c0b9707e43754b75f36ca8523bc5f7da600000000000000000000000000000000056a29b523b0cf85ab04b0a496e078dba5529cb9699e567ca42f9ee3e3f07b61ae29b0ce17cad23131375f624a366157000000000000000000000000000000000acb91d1f057c7aec1f7561614a95f8db2252cc879bbc2595a5f607d8b0ecd6e6e3ec19849eacfca62d870b049ce84910000000000000000000000000000000010d9459e07178af8e125c2f66de699cfafb5f87a63454e24d0ed88b6c804a9ff204f146ecf4d6db62234ace0a944acb20000000000000000000000000000000007256a68e23b43a3b6475b3cf209ec108bac13631ca448cc860672c65c1760a8299fe941ed5bcbbbcf63a683e86806ae0000000000000000000000000000000005d4453da747eaef90007eb8ebf6088e8617dad362f2a95638fca7312bc5cdd8200f32b17a0b483052e6784d286c2cb80000000000000000000000000000000012f0e56ed3e3f628a13493d0ade2321310cf62927b40887202042981fc9a81d6cc69be130346b7bc244a2119b2632a5600000000000000000000000000000000056a29b523b0cf85ab04b0a496e078dba5529cb9699e567ca42f9ee3e3f07b61ae29b0ce17cad23131375f624a366157000000000000000000000000000000000acb91d1f057c7aec1f7561614a95f8db2252cc879bbc2595a5f607d8b0ecd6e6e3ec19849eacfca62d870b049ce84910000000000000000000000000000000010d9459e07178af8e125c2f66de699cfafb5f87a63454e24d0ed88b6c804a9ff204f146ecf4d6db62234ace0a944acb20000000000000000000000000000000007256a68e23b43a3b6475b3cf209ec108bac13631ca448cc860672c65c1760a8299fe941ed5bcbbbcf63a683e86806ae,,,invalid point: subgroup check failed +0000000000000000000000000000000015827c619b2a73a750f6469160ff323c15adaf55e893933a5c2e5c2f0df8bc426421408773a3e8cb8b1695973f7c0b760000000000000000000000000000000000af4a7d29f10cd080d9989b341fc030a5dd51512f776fb1da7a46d542c2a6a2ad7c1309af30423b717825fd5dc0356300000000000000000000000000000000198d09947dc088c1d33d776d64765766b508764f12a28fe0119277d6e171af7c9ff83f6823558e8b1a4284857663afb700000000000000000000000000000000130d5e5315f8df8d0142d06bad7a51b08e5b3c2d49b84c9d6b177b9bb628a852ff65c1a93982dcb1b31a2dc0941904750000000000000000000000000000000018cb011868591c6b44b7ce49f82470aa6461a737173e1d88d249c0e83fc6e4e6a15f8397e515efe7dc7302ccc2e369ae0000000000000000000000000000000004de1c5539b2ef536a66c8f3d7cd49ed948c081c08cba8826d2ccdf9d159b931ea10eeb8b3f465dce0143b179059169f0000000000000000000000000000000015827c619b2a73a750f6469160ff323c15adaf55e893933a5c2e5c2f0df8bc426421408773a3e8cb8b1695973f7c0b760000000000000000000000000000000000af4a7d29f10cd080d9989b341fc030a5dd51512f776fb1da7a46d542c2a6a2ad7c1309af30423b717825fd5dc035630000000000000000000000000000000004286a9efe902158cc624080ebc5fd9b5e0e6e31554c745d5f0c34ef1de2a487f77d405577559dac59babc731ca779110000000000000000000000000000000009c09c9c9e2c75bc6a81357c03b339668c7d8cc8a3f65790ad53b62f4c21acbf64fa66fdd75dc24c05214b712ad7fdb60000000000000000000000000000000018bf7e4fe271fe195377639c5743c1ef3eccb09c86d64d2a4dad2d7d4ff0feb46252d749f82a27141dc0007649b032bb0000000000000000000000000000000018113c4584b81eb814a9f1ebd041062d0db8bec46c2c1ffb7f863bdd2fc3fac470b01c32b6f2453ab048eefe362aa1b8,,,invalid point: subgroup check failed +000000000000000000000000000000000c3f4ece90cf7d380efd3f81e66110a5923bd604422fca0fac2a16fb9a8d8b34cc1fb86a15009e8cc2c0d9fd8fbc0fac0000000000000000000000000000000012ea55d042ae590abd4c2687e0f152384d37665ddf26787d49bc9f6d40a579bcb23521c59ce91c418b9f4801375892aa00000000000000000000000000000000098af17ffd4d28bad76ce1ee669e7cdac1eec9facc260440636be88618302ab5a0826141b4fc914a389816d04597826a0000000000000000000000000000000011bef78afedf5c62daee5e86386c45826a524352fea40f68b07b7794df8eced4eaf0fb55b6990b4fb417ecc597b61e48000000000000000000000000000000000d64f0a4df4f858defde17b31476045c3dea78de4ec8082822c1699c0b9619464c75f0e57ebd12ad9e4e2e6b291b538c00000000000000000000000000000000031f12dc8a9c5445d575f99e2a4b4217ba5c0be58ac00977236440ab0ac7e2c8dab72a64464e4480aab7eaf1d629c7e700000000000000000000000000000000033f3c31337bc48622d27a9a3224a2acdb5c538a59b497a4a85840c81cff667ed0a0e4e3f4bb23a9ae53c1e79ea54cbb000000000000000000000000000000000cf0dc22af4530260cde26aa0eedc83a0ec3ae87d024e6907f3d22070e1054b3d4f24d5ace7218ed44763af6ec3f25ee00000000000000000000000000000000098af17ffd4d28bad76ce1ee669e7cdac1eec9facc260440636be88618302ab5a0826141b4fc914a389816d04597826a0000000000000000000000000000000011bef78afedf5c62daee5e86386c45826a524352fea40f68b07b7794df8eced4eaf0fb55b6990b4fb417ecc597b61e48000000000000000000000000000000000d64f0a4df4f858defde17b31476045c3dea78de4ec8082822c1699c0b9619464c75f0e57ebd12ad9e4e2e6b291b538c00000000000000000000000000000000031f12dc8a9c5445d575f99e2a4b4217ba5c0be58ac00977236440ab0ac7e2c8dab72a64464e4480aab7eaf1d629c7e7,,,invalid point: subgroup check failed +000000000000000000000000000000001679e0889aac1501b67c4ccee84942e05b1720f48b6390ab82ff76c0ab95defb79b4371770f2e07a9e7ee8de4d76b43500000000000000000000000000000000162fa6099ca3e5e8e27dea6ea0d4d13c5c150d281fd6beb2079ddf2d714bf9458184100c88440109d7526812ee0f56e000000000000000000000000000000000087bda5b07cf72c2b350e663670f094c352097330b307cbe2f7b4224841b6eb23c36ba62d4ee591e5ca68383ec0256f6000000000000000000000000000000001163d4985e0f25d36a1f8dd97b61413b0015a966a88d98eddb2ea2d5eabdd83a44fb7e37cee90cc50df2f95dbfa97979000000000000000000000000000000001652067ee82320191cc5b188e61ee2d1b94c781e8e5798c89224920ed1d12a2cb41066f69cdeffe8a4d5e3aa1be4c83300000000000000000000000000000000139cd806423ee99d913e8b0e5ddfb6b1b62478254fe39d6836fbc632de9435e1464a556b1f9466efebe93636dfde7749000000000000000000000000000000001679e0889aac1501b67c4ccee84942e05b1720f48b6390ab82ff76c0ab95defb79b4371770f2e07a9e7ee8de4d76b43500000000000000000000000000000000162fa6099ca3e5e8e27dea6ea0d4d13c5c150d281fd6beb2079ddf2d714bf9458184100c88440109d7526812ee0f56e00000000000000000000000000000000017028dd744482e290c523ae5944c8a149afd9d344fea7ac0171ee3a5ff0c2add53ab20c477a584bf61e007af5840eb4a000000000000000000000000000000000863382ee8a43f02396030768905e44c8f9504b7315b00e379b92060e4f01e1b4e0f837b24cb42354e7211419a5516480000000000000000000000000000000007e2af64687f7d581d5a2bbdf225d1ab3dbea326ec89c08852807696c8d13cc907ef4289bf5ef9826c1fb27673b28bfb000000000000000000000000000000000ffc910160c8a0b826600fcdbec027e7d4874c9774324bddd2dd4428eb81c22618a49378502917ad9fcd96bdb1371285,,,invalid point: subgroup check failed +000000000000000000000000000000001902b8c58eae3ca8d2261a637902587c2c0e75d32abc894967b6837ea34252e4558966f931789ccd76c1bbe3e092b180000000000000000000000000000000000dd20f71f5054c79d5e357f69f8d7345b5a036241774a72743271f2dc8f6e8c29a3babc2b65ed8193cc0636fb2e86f740000000000000000000000000000000003e06e2dcfbd695e9bda0baee1276ceab637fd1fbe2d2d6458c923c35b00edc7edf4f9e797aea59ff8cfceada0615a02000000000000000000000000000000000a04a2ed5e42fac7f064b43d64151a6c517ecf22dbc7563a3e9f35f555a9992fe45cf6a728ba94607df7c96f7e0a334b00000000000000000000000000000000090fac97f9f524168bc930d26ea1627ceaf187398d6bfc5a019c8467d75cd31a41c7eb9fda35fc85bd92b4cfca92dbff000000000000000000000000000000000f37b91dc935c28668c27d38328a511148c1739b65f2816dc53e42a8f059c9b2be7417a6f97c9a2597b1a0f06b7afc65000000000000000000000000000000001687dbd36c7f96f8be47f08bb75bc72f91e63e26d0157a9a9c8f531f3e73bfbd9870fe9abd0a7a3fe73b997e48d0ffb8000000000000000000000000000000000183ba882bdaf1dc850cb4e98158895effda1734fa64810cb15640e6cc027bd006e5c1a088cc2c65e8af29b64fe41d4c0000000000000000000000000000000003e06e2dcfbd695e9bda0baee1276ceab637fd1fbe2d2d6458c923c35b00edc7edf4f9e797aea59ff8cfceada0615a02000000000000000000000000000000000a04a2ed5e42fac7f064b43d64151a6c517ecf22dbc7563a3e9f35f555a9992fe45cf6a728ba94607df7c96f7e0a334b00000000000000000000000000000000090fac97f9f524168bc930d26ea1627ceaf187398d6bfc5a019c8467d75cd31a41c7eb9fda35fc85bd92b4cfca92dbff000000000000000000000000000000000f37b91dc935c28668c27d38328a511148c1739b65f2816dc53e42a8f059c9b2be7417a6f97c9a2597b1a0f06b7afc65,,,invalid point: subgroup check failed +0000000000000000000000000000000010f38e6e4f562be50152c1d10eee8f8990cb8f884035bdce111e178d1286afe2f2f02c3a36858ae2ce902d6a2872ff1000000000000000000000000000000000141dc64999baf42240b933f30ee895188b561b880f90b5f1ca8df0ac75be7d95bc15d55e321720c172171e9c4c59e800000000000000000000000000000000000548814c4b6d72cfb817b49b3141302be7d7b378e50ff9f7d66e31cd04e1f024bba334110817990264d26cbcff7170510000000000000000000000000000000011f9d186fab00b9ede155a82ec5a5e587a1c6091005c4c6e90672d15c434953426440799c5ede15a7976f18bf345595a0000000000000000000000000000000018d480ece4609a56220d4db100b68ca06ee4271b84e1a81112fbb0616cb34d2b0ec974de31f7d6957b186dbd8a8f8ad3000000000000000000000000000000000c3c1b79130f73d516c1bbe38c572be2616991b523a9370c98df9313be9f5015c3e8d51947201c6b27e8cb9c7291bd660000000000000000000000000000000010f38e6e4f562be50152c1d10eee8f8990cb8f884035bdce111e178d1286afe2f2f02c3a36858ae2ce902d6a2872ff1000000000000000000000000000000000141dc64999baf42240b933f30ee895188b561b880f90b5f1ca8df0ac75be7d95bc15d55e321720c172171e9c4c59e8000000000000000000000000000000000006d89d908b733aba090432e795c564d1badd5b8529fc53507c4850e3d97978062b38790ef45562f3d4978491b5ae893b0000000000000000000000000000000003f7fc037328c13d13fdf4b2c251ce10c41ac5d042122f0e4e4f5a71cc9e1463f62d96aed44123d0e612e5296b53fdb80000000000000000000000000000000000aa2e027a929f7637f437b333a795a2e8d1a92cda31feb5a72fa1c66fadd23813177f9360204b0512d8f460b5bb161d00000000000000000000000000000000139a2a989d462e1793caba250c2ba9c46f31b3a06f43a0f4cbaa021b5d52d254f18d9517ddf3c21780f2a2c59533c5db,,,invalid point: subgroup check failed +0000000000000000000000000000000003ac8ec0fbf8c4a6774d8567a45b033a4a622d88d8b2025eecd746d084617b67342cb1030068ef6dceea78cf97210b6a00000000000000000000000000000000090b3a144dd409afa163ef513af313e545330a66c33d45b32d61cbdeccc66f78062060a2bfab2a88ec0cc47ec3525f19000000000000000000000000000000000d542ceffc583a6022306479b2365171c3610b7f615619802caf2f81d78f2b5166114485dfaacfdfc27c6450f8c344550000000000000000000000000000000010f5a12712658a5359c0a310f6d833c0b4623c51da6c035dfddcc4c201ccb27ac0a534da459a82488c32e1d4ced9b8af000000000000000000000000000000001878dfc18d1744c6f837b36436b82cd9c270916e5206f709e7eb30fcbd4157f65639103f367f1af2684a51d93e3dc7fb000000000000000000000000000000000ca3a300efdfd9812b6213a848d7a2f865d3fbe8c73527997f18460485626921063bd5b7842b8a47ccadcebb5539a54b0000000000000000000000000000000009aafc73979c000236c08e089828880f54645b5ff4c1dcfea0ff41ffe8e3fce8ba0dbcebf0d4205bb6616a737b6d3542000000000000000000000000000000001399a2072604d50f92ee186924ce32c4e887803dc258b7495aa2f3d2187571045db7f360d2614b198f83bc8024b06559000000000000000000000000000000000d542ceffc583a6022306479b2365171c3610b7f615619802caf2f81d78f2b5166114485dfaacfdfc27c6450f8c344550000000000000000000000000000000010f5a12712658a5359c0a310f6d833c0b4623c51da6c035dfddcc4c201ccb27ac0a534da459a82488c32e1d4ced9b8af000000000000000000000000000000001878dfc18d1744c6f837b36436b82cd9c270916e5206f709e7eb30fcbd4157f65639103f367f1af2684a51d93e3dc7fb000000000000000000000000000000000ca3a300efdfd9812b6213a848d7a2f865d3fbe8c73527997f18460485626921063bd5b7842b8a47ccadcebb5539a54b,,,invalid point: subgroup check failed +0000000000000000000000000000000013a366c2748305c4ca702c053ddcf15df4a4a7858cda813d001f59bdbb419de6ae3fd24b22fbeebe58d5278caf04c0c800000000000000000000000000000000140759404192c97274c06a69609a1f927195dc0e9df312f483b075e0647a9df1225c22284edece061a2a1c3dd6c4af030000000000000000000000000000000018059cd50cc71b1060ee01c10860bccaf2abbf84cc09266f2818b7625be9368138784dfacf0a1413f19bed9c09294fed00000000000000000000000000000000138939b9b91fcc8ee3aeb35de9476576cc84adbfc513a72fb74c6b897a9d6bb2037d65489709de062b238c5d0587345f000000000000000000000000000000000a9f2a8303b70df25b27158d7fbe06db9b71f6b30b8d8f3d3ad3e81ed310af6ba00eaa104c4c8755c3c24b37b5a9bae90000000000000000000000000000000014297a57a543d963d777ce5e3e5b07d19d69f56ff3efafa2753889522f10dac3fcabcc77466ef236d331361955b571670000000000000000000000000000000013a366c2748305c4ca702c053ddcf15df4a4a7858cda813d001f59bdbb419de6ae3fd24b22fbeebe58d5278caf04c0c800000000000000000000000000000000140759404192c97274c06a69609a1f927195dc0e9df312f483b075e0647a9df1225c22284edece061a2a1c3dd6c4af030000000000000000000000000000000009a457949f0a3a5ef91fbe3beb52dcf95a9f71db70bef860d2fd60cf9330b99e1d103eea022f32f0db603a635925f2940000000000000000000000000000000018e2ce9366745f5691d3c8f907bffed5f9da928cf9c9997db1311bc47b34d9d0a076ea5b7845e0dbf1c3dab60edca5de00000000000000000000000000000000089bcfe3a5596fe5f3c61326de93eb63abb0f56a7b9a5c5f4ebd883ea681607352b955deb581b57da99e4fd302e136c70000000000000000000000000000000007cb502742faf77a7223dc713a243af8998652e45f51b32dabe766c7a771bf4642ea9f25fd924e61a0f0a6e0f27c99dd,,,invalid point: subgroup check failed +0000000000000000000000000000000003f23275ed56b4aa4a1fe367219e8c84142d60d6b9983e0abb8ca21a88e008286a902b2b92369ec14d7f45f7b66b9a0300000000000000000000000000000000130b8d95a4672e467f122fc010ac3ef7f6b6d0ecd044413e51f7c27ed22f7ab7a28f60245b9ba83d4ffc98b9a990510e000000000000000000000000000000000e5af1420546c1a5a0e0c2bd9241bb7c7a26dd52f4f358fc868bea457a60bd4f6bc5b60b27069fb4f6760813a91ada740000000000000000000000000000000017426a65d239b1d9505bef2b476799c394fcc7bfdca36a1ee5a600351334dadc238b64cf8a667a25d4880a31b73c53a9000000000000000000000000000000000f151587944aad17429b51b1c16193c1e1c93cb412538d1475473666c997e012ce618eb841c4e9e064a08ab83d7fa60e0000000000000000000000000000000015c2e049c532db585807319c23ec077a51f288fcffb2cb6528d3697221e8542e3fc85d18b079ea1b217fae30858a36f20000000000000000000000000000000010a1fe14b9981a917e49b71f549b7b548629ad0003b43a9eff26e2cfa7fd8ddb21056e26dc78c88d30c32e62af40a83d0000000000000000000000000000000019f408194aa79434edd5f2a3adcc5c55ee9c1f616641b29ef21fbba8cae342df67ef438095dd7677ea1959f9a855974d000000000000000000000000000000000e5af1420546c1a5a0e0c2bd9241bb7c7a26dd52f4f358fc868bea457a60bd4f6bc5b60b27069fb4f6760813a91ada740000000000000000000000000000000017426a65d239b1d9505bef2b476799c394fcc7bfdca36a1ee5a600351334dadc238b64cf8a667a25d4880a31b73c53a9000000000000000000000000000000000f151587944aad17429b51b1c16193c1e1c93cb412538d1475473666c997e012ce618eb841c4e9e064a08ab83d7fa60e0000000000000000000000000000000015c2e049c532db585807319c23ec077a51f288fcffb2cb6528d3697221e8542e3fc85d18b079ea1b217fae30858a36f2,,,invalid point: subgroup check failed +000000000000000000000000000000000bc43aa42d656bdc233b332698247bad1904aff059eaa3f9b943ce5d4ae4f414dd361062a243f38129b954f17389ec280000000000000000000000000000000018dc8ec1d798981f662a8ce10f25f31197a2d168d3c047d2f6a214f1554202d072baf004c61b6d58f4f0410a4520b985000000000000000000000000000000001217fe0908fca8686b63337b0de6d3b3e4853466a990d8feb8a127cec95fd8dfc97be2ac57587d5f9ae1f5c10848e5910000000000000000000000000000000005c60861ac4863f7b9c38952daa88c2414ec8ac14f99fc765042b718da08136537765dcbc28cc6a0c279d491cf95b4b500000000000000000000000000000000154b289077530a86091d21c8be9c25ccd250da8d77caf853955b0d169e1ac40b5e0fd539b09b61b293035ebcbd0e21f5000000000000000000000000000000000356ddbe9454937c441dcfc98fe7b0cf8a746464f77230229328cafe6ad9ad1b5cc7a60e50bd8431b0996e3c42882777000000000000000000000000000000000bc43aa42d656bdc233b332698247bad1904aff059eaa3f9b943ce5d4ae4f414dd361062a243f38129b954f17389ec280000000000000000000000000000000018dc8ec1d798981f662a8ce10f25f31197a2d168d3c047d2f6a214f1554202d072baf004c61b6d58f4f0410a4520b9850000000000000000000000000000000001874e45ffd1349b4ed2e361dd7093a2ba41281b2d78f123bf9f6f73892962a0bcd6dc6e4159e505509cf7839aa79a20000000000000000000000000000000000ae0404355b78d20c1c3f5d65373d905696b166e76de62feb33f819dba26d39ef78621f819e998f6f2c82c65ddc22fc90000000000000000000000000000000008a499023de01bbe12958e10a3ca967f0f6047c705345beb8fb835c26df4eee908448b39191321f3eacfbd0951861c40000000000000000000000000000000000a56e3272f0474f980511540610b29e9a722a868025ac424ce8f76f342721a92d2544a420d3472f13186a0837d7e2c43,,,invalid point: subgroup check failed +0000000000000000000000000000000003e157886f141c2ce7d9ff32af44df6b7407af027005aac1149ebbe74b3b810f834b019b3e67a04531e2554f122d959600000000000000000000000000000000159eef0ff7bbe471a7ef8e666ffe35f427e3ef5bf9eeb4693dd4127467cf2615fa6b289be07452bec5c35b6d8d8ef2a100000000000000000000000000000000028316eaa131ef5303b012bfdd145bcb3106b362f410ce05810b8c83e10b1a8f80167b546b8b86c1368d7099fb5a0deb000000000000000000000000000000000bb3a353a2c16bd73c62fefd820927898dfced930d9639c5f63e62d8e8d31fa028cefb0d57ed16299eccdf3700b62bf200000000000000000000000000000000198272cf5c6e8a4f4cf4692fb7363687d7ba52deae88a7b976863309feb4a475db150073593567352ab62a150d862ca20000000000000000000000000000000019af00f2cf92494f532052962b62c34d0999a984b4bf36abd74a485fb9089ee0967071886b97f541ae80c6f7b8bc73070000000000000000000000000000000014bcf3f26683234584d79b436cc608462f1e2c20b5ecc5019988d8e30137859a4b6d0e1135dd5bbea0781b8ed3f0653700000000000000000000000000000000090ef29bf63ca97ae8388588227e1d1a0653c43b16a35a63f2ab4f0b11fd8005d9a85d30a7406491d983f347e4dfb9f100000000000000000000000000000000028316eaa131ef5303b012bfdd145bcb3106b362f410ce05810b8c83e10b1a8f80167b546b8b86c1368d7099fb5a0deb000000000000000000000000000000000bb3a353a2c16bd73c62fefd820927898dfced930d9639c5f63e62d8e8d31fa028cefb0d57ed16299eccdf3700b62bf200000000000000000000000000000000198272cf5c6e8a4f4cf4692fb7363687d7ba52deae88a7b976863309feb4a475db150073593567352ab62a150d862ca20000000000000000000000000000000019af00f2cf92494f532052962b62c34d0999a984b4bf36abd74a485fb9089ee0967071886b97f541ae80c6f7b8bc7307,,,invalid point: subgroup check failed +0000000000000000000000000000000003b6f466571daced9c0d6dd76b5f7cc91f20d92c0fc2f051a97524aee838be57eb977af49bf020a252db1b49693892ee00000000000000000000000000000000002b99dffcb6c171f66632d0cbc9aac74e6f4823fa4690e273a5c16baef618b80d2daf81d8c6b4c5240e1c329ba91b41000000000000000000000000000000000a32e330b87bb0c2984ce443412953a879f396221cd21c2f7ae46699b02c76352d3b13759d70541fc67cdc0e65fa6d4f0000000000000000000000000000000006a134cfd54f8e524544b170a4ae0b3da02da61b56633ace68b05c511a425a0a17d3e3e155a592e6176f707100174d1f00000000000000000000000000000000132f34e6b61e7fc7764b3113a4761cde446de56d3bfadc7f285bcf11132ce8d52c656cd9cddf176755dc228277557dbc0000000000000000000000000000000019d74adf4504a87de20b5a53d4e668be279d5850dc13b1699769d2279a23903f6f789dd897c2180ed895351e4f90d7e50000000000000000000000000000000003b6f466571daced9c0d6dd76b5f7cc91f20d92c0fc2f051a97524aee838be57eb977af49bf020a252db1b49693892ee00000000000000000000000000000000002b99dffcb6c171f66632d0cbc9aac74e6f4823fa4690e273a5c16baef618b80d2daf81d8c6b4c5240e1c329ba91b4100000000000000000000000000000000025c97744f862c85507620fef6d4b90a1e37ab2d6c5ed2d794880b43bdf854ea77e87e90b5a487c56fe29e28bf7ce01100000000000000000000000000000000120515b8665151db933e51722fdac7a83d2f299623a38529508b25218f0d57aeb0c6f260e0ef3741ea1f89bc653e5d700000000000000000000000000000000019d1111f074ac541a381472a4d9dc6b76cf64e86d92018460e977460b46e17924dfa522a5bfaccbfd8bd0711950f41f6000000000000000000000000000000000433ad85586f9392cc6079c1f4f37eed99fc65da9a32206912465116f879efcf9e83d8b325433ee31235142aff89a49c,,,invalid point: subgroup check failed +0000000000000000000000000000000009b488e21aeb418e8913f6bf721b3398693a3875788a3e013717fbba3c6ddaafb4073378d121cc1f2f99c072b7f8eba600000000000000000000000000000000144346f013254cec17d8423f534d54e2496df08193ed65304fe300b47a68c8d322b6ad84f748529928d64298be5ac1f200000000000000000000000000000000102c92272571b73a7df754728d7293fd8050d9dd2b8605c3f7722e6de541b7fc6a81b01c1cf15e5241ee4ee1f81ab39d000000000000000000000000000000000af1cd6f23bbd3e9ef75eed6d6d99a7cdd24574881b3609e45c4adbf82e08259d14701fcc5b6338ecf52166aecca003700000000000000000000000000000000026a1a4c3eb54de2ba4509dc806db9efc7e26247d501cb59c525b8dd15d03b91abafa9ba5816c22e1f8ca159cda34bd500000000000000000000000000000000170b510ec227fe8534a2cbb0f405756491c4f6832df552bd23980ab0946725371b3c24fa8b93a38bdcd47e1026e1d2a0000000000000000000000000000000000d327350067f7401a228c4fbcc7375f2edb058505ab34341df865a82781448d8e053b478e97a3ff79458b264a0dc186a0000000000000000000000000000000014a92d6662933a9eec6134002fb0e23a0930a964bed5bf84886bc3819516af19fb8bee2c0291c518119f4f4198eb67dc00000000000000000000000000000000102c92272571b73a7df754728d7293fd8050d9dd2b8605c3f7722e6de541b7fc6a81b01c1cf15e5241ee4ee1f81ab39d000000000000000000000000000000000af1cd6f23bbd3e9ef75eed6d6d99a7cdd24574881b3609e45c4adbf82e08259d14701fcc5b6338ecf52166aecca003700000000000000000000000000000000026a1a4c3eb54de2ba4509dc806db9efc7e26247d501cb59c525b8dd15d03b91abafa9ba5816c22e1f8ca159cda34bd500000000000000000000000000000000170b510ec227fe8534a2cbb0f405756491c4f6832df552bd23980ab0946725371b3c24fa8b93a38bdcd47e1026e1d2a0,,,invalid point: subgroup check failed +000000000000000000000000000000001756d051ce0ee9ac0fd83b9a069086cfb62164d5131a2c7be22122cc64fe74590ab5b69e02b37a6075384df9552d1d6b0000000000000000000000000000000013826bf44ff233e612a9dc8d47cbb3aff4f1fb5abf0ffbd35f4124531bca696371357301d12ed89a2974de5027c2c59f000000000000000000000000000000000ec934504ad116a80cf15a8d9a3a0bd5db18139560adbc6de32b5871198df9ecfe122369dbce5a19eeeffffd510f403b00000000000000000000000000000000007e3f75ccfc96dbe63e7b877420bccfccf2a7a56994fcea725c1b9f1823d93b0913ba1293f32493983ebe18ae27ce6b000000000000000000000000000000000ce8b2413d344263a5e598900af1524bf863e92fc3c8a2b1f335e9029081de05c70b50b97bef75044d8083e92f99b88a000000000000000000000000000000000a47a4c7b8b35b0729b43db9785a9f15c7357815e5d1ddf02d14003923120a734a1edd931d39d9261b55c145f8c69443000000000000000000000000000000001756d051ce0ee9ac0fd83b9a069086cfb62164d5131a2c7be22122cc64fe74590ab5b69e02b37a6075384df9552d1d6b0000000000000000000000000000000013826bf44ff233e612a9dc8d47cbb3aff4f1fb5abf0ffbd35f4124531bca696371357301d12ed89a2974de5027c2c59f000000000000000000000000000000000f3f5ca684120f4b7132153ba02995e88c50ac830aa65e23978ea6be09bc838249adf113e9b463cb01fe0eee43262d5f000000000000000000000000000000001270984624e5da5aeff659f5b75d3e7e5ec655ba342e318b0643672f6e71b84916ef767c58daea149f8029bb046e548700000000000000000000000000000000064c7217b420841cff11994a5f9ba682f7df02be4c8ba2027b67d33bb51b0b956137f61ac037d5551d5ca2b880e4140c000000000000000000000000000000001813131d845fc7bd523c7a295f2738580d9b39f6198ff19112b9dd38276c3045942e74c59b4392f59de70e7cd2ee87b0,,,invalid point: subgroup check failed +0000000000000000000000000000000003dfcd47087531272c3fe93d82878c5a689eba15fd67534bc2fa045b1995eca650e19e020455f0b1cbe599fb27b8352d0000000000000000000000000000000014cc297621e8b9d4ac8b1ced78c53d61261e899de0077b73f4f119e6fc50d5aa10b5111640eb3390057510825a20213e000000000000000000000000000000001150494bc162c0f414d31816adb18256b7d9fc6593f89b30b76522566667dc302050acfba7106031e99bf580fad24aad0000000000000000000000000000000005c920cd2ddd5d660e3246962b466f34a28449fe1790b9312f81fa70e13c1835970d4b807352cf7d89efa093120d527a000000000000000000000000000000000d384fa4729576214cf631ac1e6e2af54176954bd63f13cf15f2cd3c1db4cde4758d260ea4ffc0606aae700bca7ca7ff000000000000000000000000000000001824caf3b35915f528dfbc82bc5d56b5f8e7ba2b02056f6e27cbdbb0a54de8d4749446f14b116ff36b9fa773808c647d0000000000000000000000000000000011d4918642919c801fff0962062a387a4dffe693ec09cd3d0286a18e3a22c84fc09e8396ca82e6054d8535cd888179230000000000000000000000000000000016a1f0c7fec5647dcce688d3e4e526749bbf23c1fcd9e9168ace47399f9198c9b3a6b8aeca68febde1b7beeea0641aa2000000000000000000000000000000001150494bc162c0f414d31816adb18256b7d9fc6593f89b30b76522566667dc302050acfba7106031e99bf580fad24aad0000000000000000000000000000000005c920cd2ddd5d660e3246962b466f34a28449fe1790b9312f81fa70e13c1835970d4b807352cf7d89efa093120d527a000000000000000000000000000000000d384fa4729576214cf631ac1e6e2af54176954bd63f13cf15f2cd3c1db4cde4758d260ea4ffc0606aae700bca7ca7ff000000000000000000000000000000001824caf3b35915f528dfbc82bc5d56b5f8e7ba2b02056f6e27cbdbb0a54de8d4749446f14b116ff36b9fa773808c647d,,,invalid point: subgroup check failed +00000000000000000000000000000000111650bcc4c7deaa92ef43d8355198c1c0bc402fd758933765495eaf2a6c11ea6b5b6fb4a89b00040c900fdec791c7b20000000000000000000000000000000005519640447380e96adae5042193695193484d61ce0cf26acca8c96932be68e61ad6cd23515f13f8fa4fbdd6ca5390e40000000000000000000000000000000000c6f11a5306aff663038d949d08092275c7c507f68605bf9a4b591138f578f9c454ce12176d4759e1c95f3243185b9b0000000000000000000000000000000018b28c875d620249ecc25cff0ced2b3766aa66254906c69b7157b6e418a332293723b4b268d6f9d97f566b4998997adf000000000000000000000000000000000ce5e55ebe8326ee5650122f4b39dc96fe95aa4c48d26f70580fd97be90782bebfdb2d94e784786c4188ef99ecc33f55000000000000000000000000000000000632c0e5c998679e92ad269e587e831da5dbeaff3eda614d904e11c0e4dba3c87b40101cfe2f579e8015731d0ff22ac000000000000000000000000000000000111650bcc4c7deaa92ef43d8355198c1c0bc402fd758933765495eaf2a6c11ea6b5b6fb4a89b00040c900fdec791c7b20000000000000000000000000000000005519640447380e96adae5042193695193484d61ce0cf26acca8c96932be68e61ad6cd23515f13f8fa4fbdd6ca5390e4000000000000000000000000000000001780ae947388f0e055883d231f8809eb8fcc5e30eec44cbfaf11c52d4fc14bf54480c439e805559f64bd6f2085e12f1600000000000000000000000000000000142aaed1757c6f6ed83d532333e6f8f340625864fae2e71101d1ca6787045189dcb408c433caa3a19e9220f623398aa5000000000000000000000000000000000e29f5acc8998ea0d02d72559230f119ab9f8c4a013c63baa553e6ef7f5a5d38427f5b1e82b0879201ffb5ff3e23911c0000000000000000000000000000000000b934ca967385631e767483d6279afb80ea063b624491d5d837bbe4509e1f54a90b9ccb153039fbec7716dc77e28755,,,invalid point: subgroup check failed +0000000000000000000000000000000018bccb5411a58583445efe99e16d0b1fbb8ec71c6c8175a73e8d289f102d6925b68374d8986bbe9353640565fe30d3200000000000000000000000000000000013036f4649ab1dddd84a12d5a3efb93f8187824211bda276cef8376ffc90f5728bdef3b5b1bcafd59fd9ecf3bf9acb76000000000000000000000000000000000a43335eb6ff3bf2daeeb1eaf44c2782eeb517e82e55203a247b7a396e26fdf85f93695753c52c68819b58c95f361820000000000000000000000000000000000c240b7896b3dd0c318dc9ffcaa001d20bff288def3ce42752d660fd705e1544e292a5a0aa3a9a80ae91cb47cb938989000000000000000000000000000000000e5195bcc4ee8b149a769322165b6a3157ee7d04546643390adc812b6296675dbd31168b268df869a6722a7c8f51c79d00000000000000000000000000000000004af7dc8a5c552f00d55b996d193a9571173ea829eba8fadfa7becc2f4149ee7c6c4d2c8c7b1970df33cc56e4506573000000000000000000000000000000000d7cf8be632d98ad21137a983fa55acd08492a9d1e9d6caaf520713a10f5cd71c9a155ce9ba65044f42228959e893556000000000000000000000000000000000ddbd265cad3a9c525a30ebab137fb1857a9847e66c3381d51de1040a48835701a1f5627281f6cb36181d8c1c337e58b000000000000000000000000000000000a43335eb6ff3bf2daeeb1eaf44c2782eeb517e82e55203a247b7a396e26fdf85f93695753c52c68819b58c95f361820000000000000000000000000000000000c240b7896b3dd0c318dc9ffcaa001d20bff288def3ce42752d660fd705e1544e292a5a0aa3a9a80ae91cb47cb938989000000000000000000000000000000000e5195bcc4ee8b149a769322165b6a3157ee7d04546643390adc812b6296675dbd31168b268df869a6722a7c8f51c79d00000000000000000000000000000000004af7dc8a5c552f00d55b996d193a9571173ea829eba8fadfa7becc2f4149ee7c6c4d2c8c7b1970df33cc56e4506573,,,invalid point: subgroup check failed +00000000000000000000000000000000042f294cc86c53cbc520ce6368a7149676d8bc4acf708485057c8caae31409ee1586a735c3e1f416104aede85e40a38300000000000000000000000000000000153de67ca08cdb77e92091e8f04f75d17ee5525c5ec3ccdaca907b5ebc1cfcb6ce9d6a4358999cb00ae5e824d008e7fa0000000000000000000000000000000007e00b1cd95e3f9cbb2bf80404abd9768da125c42b746c2afde0121fccfdcc2431c618d646764bc5137657d2f0fcbda3000000000000000000000000000000001170cf72d827f929cb9efef52b559f8459cdd4d60464e0b3bc6e55bb6cf83cc2e9d6314b2b80e4e4f6a3c6292d1517b50000000000000000000000000000000012a7806f98848dd9c79f74e4a25812a6fae59ca73472fd20db2ecb8f732ea59294647831e03b58c60f7a71d9892ff26700000000000000000000000000000000165e6e0a602c7a1a3334a880ee47c4c440c27cfc1ab1ea6d9df592e98d21f85519d1ddf402f48ce7dc8a87439b3f42f600000000000000000000000000000000042f294cc86c53cbc520ce6368a7149676d8bc4acf708485057c8caae31409ee1586a735c3e1f416104aede85e40a38300000000000000000000000000000000153de67ca08cdb77e92091e8f04f75d17ee5525c5ec3ccdaca907b5ebc1cfcb6ce9d6a4358999cb00ae5e824d008e7fa000000000000000000000000000000000c8373f2969862e64e7a4c319a5e4db5019391ee2fd502c86bd074de5b3a1eff7917b3517175eb28efb9aa10057df87b000000000000000000000000000000000648b6bee01e4bd215ff4b51580d254e09a9b88d879ec2a0a42b0fe80792da10a9fc4d1c47058cabddbb48e94f0df98b000000000000000000000000000000000286667f7ed2e43aa08ba81a8ae4dd0487a4d11425b1e572359783ebda7c181b7dd62857a28ae3b05302cf2773f72bc5000000000000000000000000000000000349436e7b0b86db8e77d7a4dcbeb16c541b994e6f71c45098fd198991a27b4fb48025d0808000d54fe6b9500da80db7,,,invalid point: subgroup check failed +000000000000000000000000000000000b09f1c099c4743404de9034dadea6120bb4b120e81d415d047d575423d8261af3aeadeca04610d4bbefcd5fbd48d7360000000000000000000000000000000019e08ce27700db908d40e8907434068819f874b79b1540a03b856ba8898be43bf7d97b17685ab54de67602b8fc41f90700000000000000000000000000000000010714e7b0316ac3ddc1836a569befe3965800dc3cd2d9ecca097f2eebfebcce7cdc92df0110e4b872a673d5a0ebbda40000000000000000000000000000000016700d8c04f159b7a019cd0f7ade116448e0657880d364f19d1f6ea099222abab3b766d3088bd9eb870cdb3eece5ee4d00000000000000000000000000000000054f6e8c85be6d914162702dbdeb82801d598e504bfec39a2edd1035f69deccb605af437fd4ecdb23979e993904edbfe00000000000000000000000000000000183e494cd0b25d5ee1e8f1ca4054fffa4d730f547e072af920c88b9d613deb21dac38043c385fc9f9bbd6e708602ae1b00000000000000000000000000000000155d3e886cce6f257513529e40c21b5657ef1ff1f4e71bc32b968db3e05652b1ac780da573fe1a1b94b7fef86e7c260f000000000000000000000000000000001184cf09544ec2826d0101d2b79095da6e5f77d453203c52ea17b6476360ccf166ef092eccf86dbe3a260f7fd25a279400000000000000000000000000000000010714e7b0316ac3ddc1836a569befe3965800dc3cd2d9ecca097f2eebfebcce7cdc92df0110e4b872a673d5a0ebbda40000000000000000000000000000000016700d8c04f159b7a019cd0f7ade116448e0657880d364f19d1f6ea099222abab3b766d3088bd9eb870cdb3eece5ee4d00000000000000000000000000000000054f6e8c85be6d914162702dbdeb82801d598e504bfec39a2edd1035f69deccb605af437fd4ecdb23979e993904edbfe00000000000000000000000000000000183e494cd0b25d5ee1e8f1ca4054fffa4d730f547e072af920c88b9d613deb21dac38043c385fc9f9bbd6e708602ae1b,,,invalid point: subgroup check failed +00000000000000000000000000000000065a0b9822a814adda6f22f58f0ce0d6db9b32dbb2766077b6fb9bdf084ba584dc749d746740804f826d17634509875f000000000000000000000000000000000d4284a951847bad1b602396a5d5193c3a794826f58122c9c16c6e8e18f6ec2d0e17d8ca3cda9c3bbc92c51794ec7fb600000000000000000000000000000000177f2a7306144321cec932fbc1a10d58073d6915bf9ca97a05b54fe05f525ed0c327dbdb1205b70bf7ef8cf35a61c4e400000000000000000000000000000000089dfb5d4a99380761f75a94deeb6a48854164687f1055b22328d45b9792cf884ae597db1d1a93f3f2633d14969bb260000000000000000000000000000000000b6598d4c8c590f2fbbea7c48899ff43d73087becda4974184eb3ebab605e8f90497caa2fce915f7214dfe244277a437000000000000000000000000000000000acbeeaa0ddf12bb717fd32ea32ef63d137e61b5294c162d3b67e02dcf1075838bd0208d7f8edaf15f023611b774c14a00000000000000000000000000000000065a0b9822a814adda6f22f58f0ce0d6db9b32dbb2766077b6fb9bdf084ba584dc749d746740804f826d17634509875f000000000000000000000000000000000d4284a951847bad1b602396a5d5193c3a794826f58122c9c16c6e8e18f6ec2d0e17d8ca3cda9c3bbc92c51794ec7fb6000000000000000000000000000000001a002703d6da9def84f6ce69f02ce952562a7bab2413e8d58631a3387a1f4556402fba6a39b37bda22d08a68b0230b17000000000000000000000000000000001366c2a752aad0e111adb716b75459c067e275c692bc440731510d56135c3238b410538dae3ec328bcd817384d8a6b6e0000000000000000000000000000000003321a09e7290272d75882b64d2c958d4434df3499c65fbbd1236add534db804081d29b0b34167e05f4de1d8065b5b530000000000000000000000000000000001b6e16cbfe9bd8a291dcadd4599f6edb147e261bb76caca726bc89b3fa1863922e202bd5fc9afa5bfec9923f43fb526,,,invalid point: subgroup check failed +0000000000000000000000000000000012e6297c3ba79bbec9a84699ee4268a37617d21e3ce984ba1134041e539f0a5f0ac11165e835ed1aba23d3b2c5f804d50000000000000000000000000000000006c8881033aa6aef80b52f0744c0c9058f6ee2d7eeba8a749ab15af41b19be8d6aae30d820ed0a0b50ce327c7baa1a2b0000000000000000000000000000000012ff0494d308d3e7321ad4c4000e9dcd19552d5e4bce8504760f066e2fb2509279b01f1568e3c3f6216bd5328cbf72db000000000000000000000000000000000038c6e8f0fab30b5c8e4323c1fd29527845c29e1a26c70b8e5284f7ca55fb55ad4ad5389b5280927b98907132f26b76000000000000000000000000000000000aef946b9b9e9fcabb36507c1cf441df2f5ccd71ef9281dafa5e25bf07d69556e4143ab402dfb38aa756bb6ee009a6890000000000000000000000000000000015f69bc7b0a6f2cb64fd0897b421e339fcc8637efced8bf33f5aed809a38b49a2e6376d18b1bff0ef70df1b7187ad04800000000000000000000000000000000019a5a9faf36413a1e48a97458b7c416a634e1ed92fbd89fbe4593f42abad0ada72f50f7a1e1a802158ccdf923b497e4000000000000000000000000000000000e0b851da6a8005b83b2afd272a6cd017bec39d9f55b3230b600c50fb9bd5cc1bd229671f6b2c7f1d78652e4534745190000000000000000000000000000000012ff0494d308d3e7321ad4c4000e9dcd19552d5e4bce8504760f066e2fb2509279b01f1568e3c3f6216bd5328cbf72db000000000000000000000000000000000038c6e8f0fab30b5c8e4323c1fd29527845c29e1a26c70b8e5284f7ca55fb55ad4ad5389b5280927b98907132f26b76000000000000000000000000000000000aef946b9b9e9fcabb36507c1cf441df2f5ccd71ef9281dafa5e25bf07d69556e4143ab402dfb38aa756bb6ee009a6890000000000000000000000000000000015f69bc7b0a6f2cb64fd0897b421e339fcc8637efced8bf33f5aed809a38b49a2e6376d18b1bff0ef70df1b7187ad048,,,invalid point: subgroup check failed +000000000000000000000000000000000c321b54ea1ae6e893f2c28e72a3e4bed4a9aebaf147716178d3392c959e79b6f3393d738f3722a0339c773da3ae56760000000000000000000000000000000005d2c477e1c9333eb642bb40709b042816cc54134fad935942cc08eb2db0c1582f9bf06518d4fd5577df4634332e70e50000000000000000000000000000000019123b0d9c362184620c90834730c58ec5f9becdb2f3c6c00fd157ac83c16a815efb5057011d00c774d0de626274d58a000000000000000000000000000000001936fe98ecb82299a85304213a3e30c02d90ea871661b34f664a825184c2d1ebad84d144df88c479b9526222a7fe9ead00000000000000000000000000000000081a6abf02a0a236ba6006a95a8ab3f186e72f05b00f2b686049cf980898d64a71bf2e41b6b276ed6556cf83a3247b6e0000000000000000000000000000000012162cab3a7d92acc12efec9672ecb4cb30ae208eabc77608748e968a84ec0de81678df45d1655e45a19162b06354a99000000000000000000000000000000000c321b54ea1ae6e893f2c28e72a3e4bed4a9aebaf147716178d3392c959e79b6f3393d738f3722a0339c773da3ae56760000000000000000000000000000000005d2c477e1c9333eb642bb40709b042816cc54134fad935942cc08eb2db0c1582f9bf06518d4fd5577df4634332e70e50000000000000000000000000000000008b24839939deb424bb0c7bb171064e01453008ada6e3f14fd3a86db79162d0f9a851eb6abcb7dd27f93df0f7ff3320300000000000000000000000000000000036bdf42585414a8fd616bf967ed2ad4eb2b30a7581a58691c6d58e5d54fa152b42427c98fb3094c718943d9d014730c0000000000000000000000000000000002b542c2d6e8862495b2a6937f1fefbba53c228af512918bcc5b39083125c41340f1b5f1c60696c7c07f6705dfbcae9100000000000000000000000000000000030516a5aa32954dc083531035c55aa623d5f53c07b7bcff54cb9bf04d567a293ee55b2027cdcb864b133eac0f3d5274,,,invalid point: subgroup check failed +00000000000000000000000000000000018a649f727e9ac88994760a97b129d3347d30174d54a1442542123a76f805e1a48e7a71f3704eaca90b3c17c538d26b000000000000000000000000000000000a5c006871d73a11d525df1921d256f880c2a3c0aea04ed27e83d5c264d3f2196c997347299fb04149c4083876bbf3d5000000000000000000000000000000000995b9bb378a7c98ed661b493ad17b3aca367cc6aa6db24fc421d82455bca4edae6c891c191023ef2113f3c7eba79662000000000000000000000000000000000213eb30b55a6ab8efdaa67c6c99362dc62022041a6ee76f7c72cc13ffaffddf88bc68ce3d4ed36d54285b177bffc1eb000000000000000000000000000000001202977411cd6674c957c74471e269ded8140f72483b5bf81846ec60be1748080e67e38c8520b0b71793f2be9d2a5b1b000000000000000000000000000000000d49d0b96d12bbb9ae56cae73bf240cac03daa2743557e6a78f029883752ba011cbe216618b28cc173a186750602eb7800000000000000000000000000000000076ed600ed860f16ec5dbae3f09471302bf85fde7702b3376b0d670f93560e77699bed969e7001570f44dc5e37aaa830000000000000000000000000000000000c993a8b08d2eb00bcee05e1c09e8a37834fac53643643402f60fbfe2cc7d795f5c68f3d6a32c8604c37211585830426000000000000000000000000000000000995b9bb378a7c98ed661b493ad17b3aca367cc6aa6db24fc421d82455bca4edae6c891c191023ef2113f3c7eba79662000000000000000000000000000000000213eb30b55a6ab8efdaa67c6c99362dc62022041a6ee76f7c72cc13ffaffddf88bc68ce3d4ed36d54285b177bffc1eb000000000000000000000000000000001202977411cd6674c957c74471e269ded8140f72483b5bf81846ec60be1748080e67e38c8520b0b71793f2be9d2a5b1b000000000000000000000000000000000d49d0b96d12bbb9ae56cae73bf240cac03daa2743557e6a78f029883752ba011cbe216618b28cc173a186750602eb78,,,invalid point: subgroup check failed +00000000000000000000000000000000012065f7dc3b8d6d6dded1106ecd071ac0e5f73c2aea8d088bda7687ccbb34625e2da53befb200d0885b25c228b3637a000000000000000000000000000000000d222a3c0a560f9e8a6624d9100b72e62f515f1d9384ac966d99c1761264ff8e88f308e57ddc94f156655dc310b3976e00000000000000000000000000000000109fe60cebfba62b89ae166733a097629026ccee41c95ad0260c96b772293e1403247b0451d149d527212c228ca6733a000000000000000000000000000000000a497d6c0285f7d5434c42605077528e24eee8185a615c39d2caabc570bcc01b40eadb937d78e6ceb8572115671053c8000000000000000000000000000000000f0d14ceab429a46e5568200034dba88a713899a12602529fd015e2c792191d8ef492a4d685ed09a75f638ad56f02ef10000000000000000000000000000000004d4b477fa154cd86a0934130c27f4eefed4b986da5afadf558d4fa003d2480a93b351798a24c2232e3c09c0bc33e7a400000000000000000000000000000000012065f7dc3b8d6d6dded1106ecd071ac0e5f73c2aea8d088bda7687ccbb34625e2da53befb200d0885b25c228b3637a000000000000000000000000000000000d222a3c0a560f9e8a6624d9100b72e62f515f1d9384ac966d99c1761264ff8e88f308e57ddc94f156655dc310b3976e00000000000000000000000000000000129c37bc44471eeb38b484699156862250e40df9415876f8a0da3d2f2504bd5dfe76e7b67f103a94c20751a656c5c1020000000000000000000000000000000011f24e9760017ed9120e3e0c25f57ff9e70f4f15265cf884d9d978225996f21905b32c0f918e5ac30e095767779cac8f00000000000000000000000000000000012e10463254df4bb4765a10ba47f47b6ca7ccf1ed289b8a9ccc4ee5cffde83a45077c3f093d0da6aaa5f38ebc3e5f0d0000000000000000000000000000000006755c3c202da2f65be8880e12485e2f8ea85b8e6c4b21b559e2a45b5f0977e01bba8685e4d7acb4fdc045a4cb6bba9d,,,invalid point: subgroup check failed +00000000000000000000000000000000182c68fe02eb491e1c0939304135485dcd2955c643ec67198d4a07075f0ec96441ffc1274e75dd36b103053660811643000000000000000000000000000000001308eb23be0860718e6ce06c2f24f9f94b7a72c557559ba8e1a9e3bc4eb4df009472adbfb26689900a65ee80b976a5c200000000000000000000000000000000030cc52d7901d0360d10f344cecc8325412788cc30a912d5de3fa9bdab18db44efea235c5d34bab526f3b8ecee2cbb8d000000000000000000000000000000000cda35f561c19ebd85a445ce8bb1618b446c7013c07606ce58e0b5627a5c9e7cb200e2b8ee12a0564730279e75b469b500000000000000000000000000000000055ad0655a96f6dab5a432e7d2fef57a6a11113070444089df23b4b911e0994b90aaaaa2c62d06756f4704fa218f7c350000000000000000000000000000000011d22438d7c162d34802a664c254abaae07659902e1f1bfc2bdffa6c17eb11bff5276474cc3cec9507e28685f1c21bb00000000000000000000000000000000005711605edddc03aee2e53b0945162616b969fc4ad2c15819df360533120dd2ded321aa929d67dbc84ecefeed531a49d0000000000000000000000000000000012adb2a59f85343c923642ea4be500595ec8c76755c0c219e5484a7a0f53a4c3f9740cf6973aab349973295791472e5900000000000000000000000000000000030cc52d7901d0360d10f344cecc8325412788cc30a912d5de3fa9bdab18db44efea235c5d34bab526f3b8ecee2cbb8d000000000000000000000000000000000cda35f561c19ebd85a445ce8bb1618b446c7013c07606ce58e0b5627a5c9e7cb200e2b8ee12a0564730279e75b469b500000000000000000000000000000000055ad0655a96f6dab5a432e7d2fef57a6a11113070444089df23b4b911e0994b90aaaaa2c62d06756f4704fa218f7c350000000000000000000000000000000011d22438d7c162d34802a664c254abaae07659902e1f1bfc2bdffa6c17eb11bff5276474cc3cec9507e28685f1c21bb0,,,invalid point: subgroup check failed +0000000000000000000000000000000001d70e0c28a776a0fef6d7d6a729f03d59c20a4c1f28bcb28645b996c307483837361d146b73fc808041893ac1738365000000000000000000000000000000000a68b5a13a6e5ffb88ad2618be4a197271d08e55781d21c367209c08fab2545b99f8e1e0b523854f075a915856f7483d0000000000000000000000000000000008c7569bb4e8d3b213dff2c132e5954e9622edc874dc82fcd674405cfda14dbeeb323d1605d06a92231f44339952333300000000000000000000000000000000092decf1271f8cb90a67c6cbf7eb0cca0c2d71c698470193ef495e494a8a1ac3b6bd78fa6e4367874ba18a00f6eca025000000000000000000000000000000000dfeff0f041a1868cd0ede471164f24dcac619c56515b8eec5c8aea870a79a2d03f0e1526eb1e8cbcba908969b5e952700000000000000000000000000000000109aa32bee0a83dae428e388a39ece51fd3f392ec841ffaa2554972528b7f55ca36b19ef6ae585e91995a50c0848cccf0000000000000000000000000000000001d70e0c28a776a0fef6d7d6a729f03d59c20a4c1f28bcb28645b996c307483837361d146b73fc808041893ac1738365000000000000000000000000000000000a68b5a13a6e5ffb88ad2618be4a197271d08e55781d21c367209c08fab2545b99f8e1e0b523854f075a915856f7483d00000000000000000000000000000000065860fd6efa478810b70e56ca788706bccb63191649d7b9e92941efe264bd4720b1f536d90a034b681ec9ee16f50b5c0000000000000000000000000000000014e4277fc0e4827510d55f27162d85d362f99ce57a7baf74f62567d42efd3afefb61782a6ba85d4d0e27184dc15b30ea0000000000000000000000000000000004a18f9b07e2c61210d7b00d54dd1e2895692b928adc0a4597d4ff7efbfd7215e764572275cb78f29d106aec578ed1a200000000000000000000000000000000025c5527f68d69ca8d86ffaaa3330784b9a9e32069cdc2e147c81d9a39eb181e39592a126d428e6f7963d34292f44e4c,,,invalid point: subgroup check failed +0000000000000000000000000000000010f18fc4c3d422a64f6c8935636cade47636934cc6c7d5077428ca6e2641068f4668a792a20c6bd4890da09de9765409000000000000000000000000000000000795df122ae83682617000aa2f80fb82cf933b2e5765fde4409249ac06d8eaf2a92938fb7bf4cc5717e4c604b68afc1f000000000000000000000000000000001825f573c335f0e3ad6ca9f721b529ab1a84585094c034058fce2f84185d99ab78e568b7cf129adb65501c266db679ff00000000000000000000000000000000114d2a8a69b83b46acc0dc3cde307b4690d2335c18b583874a0f5f6ed6b4e4ae63fb114d32479d56d3d2ce6393a128a900000000000000000000000000000000088c08b1b66f37b98e443f9d390b9934ee8edee075788a6ff9620c386f8ec4c1f6455704574b65086170c8a37f1728be000000000000000000000000000000000366a281910a6cb906b8acdb68180c6068b555c00d84b2cd3153ce5b8dc64532b3977d186202d1d6c00673b7ffe42c1a00000000000000000000000000000000067458ca402c19488e2515037abf9323ab8288e0e11f7cdee18b3da50cfa377435cfde1f63dcdc451ce65a05641cae370000000000000000000000000000000010ed9c895629bdafae66ea176388be4e4ce45cb13ecbe0869ce57f0f48852b6b8c47bcc4a14fc5327f1df372ad9f5d4a000000000000000000000000000000001825f573c335f0e3ad6ca9f721b529ab1a84585094c034058fce2f84185d99ab78e568b7cf129adb65501c266db679ff00000000000000000000000000000000114d2a8a69b83b46acc0dc3cde307b4690d2335c18b583874a0f5f6ed6b4e4ae63fb114d32479d56d3d2ce6393a128a900000000000000000000000000000000088c08b1b66f37b98e443f9d390b9934ee8edee075788a6ff9620c386f8ec4c1f6455704574b65086170c8a37f1728be000000000000000000000000000000000366a281910a6cb906b8acdb68180c6068b555c00d84b2cd3153ce5b8dc64532b3977d186202d1d6c00673b7ffe42c1a,,,invalid point: subgroup check failed +0000000000000000000000000000000018339c70bcf5f8cbf7f3d67dcc7b40a937045b53243d6bcd417d467b1a264b960793171fda821c4206d10b4fe8488e170000000000000000000000000000000017907a4fd66b2a8b113352975ed70c0833a6fb51568ada67bf9f8cdc770e30a3a5fa305200691f4e8dbf210cbefeb002000000000000000000000000000000000b46ea3a7acd5615741210a761f7ef55e7381f52593f02e20aedc0753861acfabb5333dc5bfd829656511070b642e7fb0000000000000000000000000000000000989e2bbad608bc55d0749e0de844e001934d28a58178377d8607a1c5d5c85eb346ab94bd527b36b965626457f6aa300000000000000000000000000000000016ffa6209c14e0803789f94886e96bfbab47e07ef745557f1d1dd48e887086424cac57dd9a624de73bb7f3521de3fbe2000000000000000000000000000000000fac98b30fb441d9426f61bcdbb149b103fa9ec3b85cbd5f755d57474bbeebe796b96fac0ba1d4b75897dea8e54796970000000000000000000000000000000018339c70bcf5f8cbf7f3d67dcc7b40a937045b53243d6bcd417d467b1a264b960793171fda821c4206d10b4fe8488e170000000000000000000000000000000017907a4fd66b2a8b113352975ed70c0833a6fb51568ada67bf9f8cdc770e30a3a5fa305200691f4e8dbf210cbefeb002000000000000000000000000000000000b349ddaccbdd1381d9eb4ae7e65db31733fe3c24f38c21f5a20298bd8e01db7ebbe3c703327a5f81c89c040a5e17c67000000000000000000000000000000000dbadd08c77f8c210439d48fb55c741dc83aa9adbe7153bee1ddf1d3df824938c14d85a528c285db28df1d0fb22b8e820000000000000000000000000000000014d76b082d032e23130d6e55c0560080a5aa607f6cdfcd683d4e2450aa0788a99a005ccbdefdb3f626a045fd7cb9ed6400000000000000000000000000000000124130e29fb52ffc0d8e8ec760619de7397813b8ce598afe97f9076899f13dbe35417a6f94a2c4bc0341c933ab8c30b1,,,invalid point: subgroup check failed +000000000000000000000000000000001977147ab98c2e88f46f038c821e85fdf476bfe7bf7b7fd633ecfcf1fd2ef339b3b5cc686f4a8937e16dfa29ad8123f7000000000000000000000000000000000ef669778c61c21dbd4681483c51269a74a3ba1b1f75796b4680f0e30a286aa0173147b206f91c84731ec8ead074d187000000000000000000000000000000000e0f7595e4c136b4d8bbd1eeb021df7dd2bcf1d9f98e4fa293f7edab635e019af87c138275fefacd806213177af40eca0000000000000000000000000000000005dc209d6c86f1871637998c10490a70371f9e00a68d1363dfaeb62046473dfb4bbd3b18b943439f75c45a1ee7f264a90000000000000000000000000000000003d215567d1e8f504a72658d48fa51374ac77234552c17db4033af780133d8516bb0769678ecb50b8b9eb950c2dd73e80000000000000000000000000000000004d780849b731012e1e5732d5f6d32c659a95c3e1c8f5ef4841fe82afc6f0aa309b1e02dc2554a4a4ee781be2be2149f000000000000000000000000000000000073439cedc08916d00609c6152ee2844be85550ff5c199e9e9dddf09bedfc00d907dc85255651cff3e28a74d3b4836c000000000000000000000000000000000e57e74af4f2d6c08843152cce6d095d00679998463bfb41bef9c57ba427e14715e9e0da0e8c5193a798cf92590b34b4000000000000000000000000000000000e0f7595e4c136b4d8bbd1eeb021df7dd2bcf1d9f98e4fa293f7edab635e019af87c138275fefacd806213177af40eca0000000000000000000000000000000005dc209d6c86f1871637998c10490a70371f9e00a68d1363dfaeb62046473dfb4bbd3b18b943439f75c45a1ee7f264a90000000000000000000000000000000003d215567d1e8f504a72658d48fa51374ac77234552c17db4033af780133d8516bb0769678ecb50b8b9eb950c2dd73e80000000000000000000000000000000004d780849b731012e1e5732d5f6d32c659a95c3e1c8f5ef4841fe82afc6f0aa309b1e02dc2554a4a4ee781be2be2149f,,,invalid point: subgroup check failed +0000000000000000000000000000000005585544fc7ed448c7939c42235549edc98c5d9a793ec918274b49687e8b9267d53c2e5d66a44d889e8f2e94abab43490000000000000000000000000000000002a091dc69d5af394d408a3b5b60debffddac4db228c613b2e2f98b932aa8f90d9f5a77129fc0fe69b93ca64b0081eb9000000000000000000000000000000000f694959a69b0d692e167e95524555d58d06621d77f46c54b7f0da0a45c4cabdc8ac916b0f2052cb99b6f0f5bca36fd9000000000000000000000000000000000df814c1cf62a7a089984a3afe3f7636157ee17bbe0dde1aa2e56fe7168a3fee7c6102999dfd55b282f1a6a4ca0e0cda0000000000000000000000000000000002ce0806a288c2b9d7e03204f573b06c440be782469cf7f1478f53d5b017fa9ea3b1025cc5de378e2186c150cbd1bc0f0000000000000000000000000000000007d3c1d2c5806e73119cafe9efda5a8419679c89d17f7a90fa6302485d4efe9e44b287f573d576d7f45589c7501e40ff0000000000000000000000000000000005585544fc7ed448c7939c42235549edc98c5d9a793ec918274b49687e8b9267d53c2e5d66a44d889e8f2e94abab43490000000000000000000000000000000002a091dc69d5af394d408a3b5b60debffddac4db228c613b2e2f98b932aa8f90d9f5a77129fc0fe69b93ca64b0081eb900000000000000000000000000000000199d1db3ab960c003575ba7a53f489159aa2005bc9a30bc23e952b57ac892a2340a8adbe21eb07bcbac255be231c49120000000000000000000000000000000014303bc0d1c9748ebbbc187486650cd7651e51ebeb1bb428e153ca5e83fc4b118c7575efc03ac0ba500c6149f91db23f000000000000000000000000000000000b6383243f6914d41d2947ee74ccd299a20741e33bdad3aff2d05de662fb4d7b9b9266085bb71dee8c13dfbb121cdd320000000000000000000000000000000005d515210d948c48ee9f7ced4c23a5eb12c6bc26c974d518af4e14c1b2b2c5a286c2bc4d51ff5974eb939b4395f9d8ed,,,invalid point: subgroup check failed +000000000000000000000000000000000ba91d035c7a2da7e14c400bb137b66a4d8f563004bcf57a01f21223225b93f860eaab9c429b915a130115c8f61c606b00000000000000000000000000000000196c7f0f6b99772d1a5e97afd92a6ab4916a2f2df709bf6393a60fe29623b25dbdc989f22715fda427bf8cb84cdfd033000000000000000000000000000000000b362ce289c7edfb507b579fc8d344c5e7bfa8d58bf3629a41af7ec1faecfb9b95139d9a8159804691047e4b18bc1cd600000000000000000000000000000000112bac785b4033f11b08e845c8c5ce78e40138b0cc0b998dd8e0213bbfe0e5b96a83ff2b53ee9699b18efffdf879602a00000000000000000000000000000000157885a39334664681d8425bd60e9c1d12dd1ef45b9a3c40956df105cd3534ff9378203755119ed302a54adba9e5858d0000000000000000000000000000000008237a9ffe95f89a24e1e3a82d8f127766e2173505a9ef0e715b1ec711619664a12d86d247e530049ee542ee4d20cc7000000000000000000000000000000000072c644635936a91dcaee40e3b4794e634c315a39a9cb5cb99ef6784b332fdcfaafdc80e228cd19d0104d5796f584c350000000000000000000000000000000002318bea9077484e9c1937dfa63774b5ecf6fc63ff06e5cb653553d5111a981c09c907069ffe11b5704ea60a99873283000000000000000000000000000000000b362ce289c7edfb507b579fc8d344c5e7bfa8d58bf3629a41af7ec1faecfb9b95139d9a8159804691047e4b18bc1cd600000000000000000000000000000000112bac785b4033f11b08e845c8c5ce78e40138b0cc0b998dd8e0213bbfe0e5b96a83ff2b53ee9699b18efffdf879602a00000000000000000000000000000000157885a39334664681d8425bd60e9c1d12dd1ef45b9a3c40956df105cd3534ff9378203755119ed302a54adba9e5858d0000000000000000000000000000000008237a9ffe95f89a24e1e3a82d8f127766e2173505a9ef0e715b1ec711619664a12d86d247e530049ee542ee4d20cc70,,,invalid point: subgroup check failed +00000000000000000000000000000000077dfb9ac791b3471c6cbcb0b37b65adb0bc4e40341b85c13867bfdaf32365ddfb749ebfd965abfa22996773eab505540000000000000000000000000000000015e771a0f0149cfad7910a4a1971b39323948bc7530936db5d99a53b51bd656bdce093cc2b91ebad0f91a95034afa0e3000000000000000000000000000000000200775a5848ac14b5e762ae7d4b492d2dc0bd5e80ef7fc760d42ea6fb07ffd2944409052cfb773875df676a188da65b00000000000000000000000000000000140ec7de210c890e4c795eed394d32d77f6acad0a3628da2ec805d4cf2de9822b5a73f06bdbeeba0fc1068c26da675b20000000000000000000000000000000018e7877a3f27c5400b08bd2769616745e4657f6fe262f9d7b88330917f977efa463b3226f3433da95a82568d990b1fa50000000000000000000000000000000015801af4934193336cc67fe8f4be5d2093909006f8bdd3382d60fd5c6bce4b86071370eefbce7a04dbcfb825858f90eb00000000000000000000000000000000077dfb9ac791b3471c6cbcb0b37b65adb0bc4e40341b85c13867bfdaf32365ddfb749ebfd965abfa22996773eab505540000000000000000000000000000000015e771a0f0149cfad7910a4a1971b39323948bc7530936db5d99a53b51bd656bdce093cc2b91ebad0f91a95034afa0e30000000000000000000000000000000017bbbfef68883fbf6fa9cdcef37ef145d7fbe9532164530e9c08d196ee41f38784b257087ad53f4939426451fb5f955c0000000000000000000000000000000018bb97090375c21600b6d3ee0629cff78116aa59d7b665c08590add8cdff8247c38b588a25e0b11eee5111c63f8c619e000000000000000000000000000000000e181f7327776df8ec16258115303029c68e1b72fcad6395c6d7d477368e1697076333a2102447a225fb3f3d725b3b0b000000000000000000000000000000000291d82b95e9a2c3f766994c304dae7f19f1efc789f68c4e58eda102da36cd0d7eec3d5a1b1e88c63462c8ec0e4393a4,,,invalid point: subgroup check failed +00000000000000000000000000000000121a9b867c86195dc4aee07081c1ad62f066b471bb5a14f296943b263fb9a25e6805e3171624e7e7e45b78f175a1861300000000000000000000000000000000071e1c35979d6f43170e79c0db5cceccff01f17cc2980b771a6cc38e0b27438a9db8e00eb943142d992c6a395fe4aacc000000000000000000000000000000001819d13cf4522a9362bbeb0bbbb0a498c3f34da1c9e3b2c54d08f7c8acd9ee756983fe80405579effb79d673407390ef000000000000000000000000000000000f870e5978f4a6e3b655fb2a05541ac0673e7b10136adaf28be4dfc9022d4cc8a60e17d125dfe53fbe10c644ff37e02a0000000000000000000000000000000010207ef774cddd10db2bca0a051ceb12900c407ee265dea4615553c193d7475b5ba3198b7e0160740e4fd015dca33e1d0000000000000000000000000000000017937be546e06fd2eab4c969a029534c02fb770646d43edeb5e6c8bc0c2b5f35576c375bf860fd1087ce099d4377d24e0000000000000000000000000000000001a8b8cdcd160565a1df9cb5ccb06a62fbaf32b2cac4ec9a552773313c940688638775983815cb246d4eaafe91c3451100000000000000000000000000000000082a1237c161831a37589ff711f7873d5e092d8a4690b983c9ccbbf980422ed177a3ebbd4b4ae4b557bcb3ae532f1823000000000000000000000000000000001819d13cf4522a9362bbeb0bbbb0a498c3f34da1c9e3b2c54d08f7c8acd9ee756983fe80405579effb79d673407390ef000000000000000000000000000000000f870e5978f4a6e3b655fb2a05541ac0673e7b10136adaf28be4dfc9022d4cc8a60e17d125dfe53fbe10c644ff37e02a0000000000000000000000000000000010207ef774cddd10db2bca0a051ceb12900c407ee265dea4615553c193d7475b5ba3198b7e0160740e4fd015dca33e1d0000000000000000000000000000000017937be546e06fd2eab4c969a029534c02fb770646d43edeb5e6c8bc0c2b5f35576c375bf860fd1087ce099d4377d24e,,,invalid point: subgroup check failed +000000000000000000000000000000000a86f90fcd9b63a0cd5f53356c170699d78d03f180d59c38ff770560bda30bf412fdcf236b6720d94684ef1aab97bafc00000000000000000000000000000000030bcbb272ab20a2f27d45295875e3c29a8ad088bb8173feb6f6f4d2c81bbc91d673c23239e36bdafada8c7d50b54b440000000000000000000000000000000011e01c96294c726ed3ef22a5c6597d8202604c4fb14058bf44fa64ae6d342f6f77f151c8ecd99f793e79f0ad29c309f40000000000000000000000000000000000e186664d8c2a2e136ff1be2192573b94c083bf242b2c01c984a792e43a11a10599481a9a79f6a8d5b074bc16019725000000000000000000000000000000000fc48ade56f841489c4824411130fb5b7e0e83b613fa09099f318cef207ce035d5d6e7ecff5057c15ee764ec8a7fa20300000000000000000000000000000000003f1b261043887af57fab48b505ed7aa44132457d71a390646b70fcd073e677a7e275a89dd0a2bf32beae3b2bcbd6e9000000000000000000000000000000000a86f90fcd9b63a0cd5f53356c170699d78d03f180d59c38ff770560bda30bf412fdcf236b6720d94684ef1aab97bafc00000000000000000000000000000000030bcbb272ab20a2f27d45295875e3c29a8ad088bb8173feb6f6f4d2c81bbc91d673c23239e36bdafada8c7d50b54b44000000000000000000000000000000000781404020a416e2596ab361e02674e25cfb365420d35d5db7146f563a7675a942383da44ae4df49c45b38e371c82a2a0000000000000000000000000000000010c546bda090a13ccf0fec03bdcb87b41f5aed3b4e6740690afb9dadc57d773aae2d22a2d8323336c5b1dc5798725495000000000000000000000000000000000bea6aaaadbbe8102212279f1458c461d3a0d54e341c91b5e16e0ce5ba1517a13cd1d43e1d0b25a63b7cc57ece5369f3000000000000000000000000000000000b0b676e5cc2f6ac383f5dd42d379c552579f601de0cf4f34ac637383a31e393df40f5c0f95b5a8f57cd6fa4de01caeb,,,invalid point: subgroup check failed +0000000000000000000000000000000014372fb746da15863e9ee4e06099c7e513bdbe53ca772a4b61c81eaa7f841399422f7902893d5ee7f7d59d530e3674b10000000000000000000000000000000006ba991efa65ef8dfac8b07915cab83b5267babba1291e4662a81fdcb455faf33596f6730b6f5b3eac2076054a4ccf6600000000000000000000000000000000042ee88071289a2adeb69cbab5a3ac8c7935576bc434062091cdf1cada4b67a2501c179b5980b53256f623840a5aee5700000000000000000000000000000000063b0819dd470047a704f20f5f7c65ea0899f25603dfc7e8b8d5f0d0d323180aa921e43d63b45acc8fe9054326a8d9bb000000000000000000000000000000000615e2e5b0389017cd3ce7c15740caf3b897fbe4a59c68247c3c4229bf661257f56bcc10f55fc722f96424f5617d259700000000000000000000000000000000166f7cadf7cb9ac5a8cfa83fe4aaac0e32fd4de3e38e0d39e010d50f5b3d383243d6870505f2a285b7c5f6fc1b13f0f0000000000000000000000000000000000d1ed017ef4702bcd3bfbbcff36000af6a1d26ab363e68ea5629027e0b90352bf1d8e03c13a7955da6c15507cc1c9f47000000000000000000000000000000000e09830e54fe9eddd416479a1740f6f1b7693f2d153d322f27779b16bb6451d7657df85a55da75a4aee0a2e33b3a46e600000000000000000000000000000000042ee88071289a2adeb69cbab5a3ac8c7935576bc434062091cdf1cada4b67a2501c179b5980b53256f623840a5aee5700000000000000000000000000000000063b0819dd470047a704f20f5f7c65ea0899f25603dfc7e8b8d5f0d0d323180aa921e43d63b45acc8fe9054326a8d9bb000000000000000000000000000000000615e2e5b0389017cd3ce7c15740caf3b897fbe4a59c68247c3c4229bf661257f56bcc10f55fc722f96424f5617d259700000000000000000000000000000000166f7cadf7cb9ac5a8cfa83fe4aaac0e32fd4de3e38e0d39e010d50f5b3d383243d6870505f2a285b7c5f6fc1b13f0f0,,,invalid point: subgroup check failed +0000000000000000000000000000000009f0c6f9fac38e8c83183499b8918a1ffbc52f2400882edb66594f496ff38ffec77368f28e4f20767257e200f48255700000000000000000000000000000000002a05bfde9523ac13ba3518cd5b308c4985484f996e7192140d681d9934d501111a81445031d84d4a47a9727202c07620000000000000000000000000000000003004acd2a95d932b84233e80bebb9fd92b302809725d5ca0921a5d8983950ff521d89bcc2d1bc1e7c186c702bf7aa270000000000000000000000000000000011744ffc7092744a79e345be8b51569c5df8eb10b4e49957ade8df4ee4ede566b3825eec89027d70d188ff858a8b6cf4000000000000000000000000000000000e46cd26b21a8a933eac05ed526a2b8fe195e5a5435e79c7f385fb69a90190acd06e25e9b63af7862616c79add032597000000000000000000000000000000000ad60c22b3690c78c23682ba902a18e708e88430a55a9038975a43b4606ef4c6e2b8e648a25097b3a34bf6e4024d00280000000000000000000000000000000009f0c6f9fac38e8c83183499b8918a1ffbc52f2400882edb66594f496ff38ffec77368f28e4f20767257e200f48255700000000000000000000000000000000002a05bfde9523ac13ba3518cd5b308c4985484f996e7192140d681d9934d501111a81445031d84d4a47a9727202c07620000000000000000000000000000000007d87d13752c52bf0510cee94274f6f4a6e0675de9a4a864ba5058dd8771b6c5000e957cfca5279e64f09c21111322ec0000000000000000000000000000000007999819b5b57104c9432a9d4dc6ad377f0c6f0dd630155fc489aed1f8d18ce0386222813726cb786635778b74967bce0000000000000000000000000000000016b66e0ebcbf6043f6a7fe52bf527a9b763cd68d901933068966e6dbb9817e1287ebc2de9c3729df8b4228a4f92d9732000000000000000000000000000000000ee19b863d5ce19afce76e489e122948597ac6a5ee07e2d856a49377285ac93d6674cc5429e02bbd051d4edf7988ba89,,,invalid point: subgroup check failed +000000000000000000000000000000001269c2717ba196d5004865af806d4a99b8c238583db14f9c02da70b0275cf35a3a5276eec0c8e6934f11e0d5cc8b7c9f0000000000000000000000000000000017971814f15aaf3f6672b3a720cf6726aa042dbd82ac508a8f7ac5ddf17f377891199ba2fd01d990868347d45e3b37ae0000000000000000000000000000000001587e32753adc85c98cf1322115772b0e282ef4e6a75944fc86091e81aad076508e3d727f4df0e30924fff6b67c312e000000000000000000000000000000000ae96d3a1b79985e56f80df8ac4d9792229ca580b156dbbe71a9db470447fa4dfa19fc8a8a2e2f0fae28a24b7d6153d100000000000000000000000000000000114101ad0d29ddfd2fc436d2a270711c444c8c257785f4b4c549e9c795f6dd9834d3744995d2188c0c968752a7f68892000000000000000000000000000000000d30d9cc1e2273af745dd47a596a2202ca4fb655f9f9beeb0a87631e2461f29206163fd921761fde69654cb02e23505c0000000000000000000000000000000010cda048fed479f7bcd388a0acaa977b134055f5ea92b2a689793e301d58190c67031920ccf1cd97ecf9f429f5a022e00000000000000000000000000000000014c410faae20d54049aa7c644ec1ef0388367ac847f6781e62ec88eb9262ffff5f19cf5f4ebe791a44ad9a84fd78aca70000000000000000000000000000000001587e32753adc85c98cf1322115772b0e282ef4e6a75944fc86091e81aad076508e3d727f4df0e30924fff6b67c312e000000000000000000000000000000000ae96d3a1b79985e56f80df8ac4d9792229ca580b156dbbe71a9db470447fa4dfa19fc8a8a2e2f0fae28a24b7d6153d100000000000000000000000000000000114101ad0d29ddfd2fc436d2a270711c444c8c257785f4b4c549e9c795f6dd9834d3744995d2188c0c968752a7f68892000000000000000000000000000000000d30d9cc1e2273af745dd47a596a2202ca4fb655f9f9beeb0a87631e2461f29206163fd921761fde69654cb02e23505c,,,invalid point: subgroup check failed +000000000000000000000000000000001252aaecb588ffcdee3e4fd92ff5164feaf9aa39acbc71c704d8180611d30fe13e59bba805101dc1cecf77b254bc65510000000000000000000000000000000009dc3de2e8aa94dbcc25c8775e9bd0ae0fa8581df790e562e67f24c08efaab59a0a8062478a09c262040c5f0558971c3000000000000000000000000000000000b0a6f9e0b58db3015e1dc63f9d377895d25f48e8a05371ad90c3ef5f3085a76b888d38693eefdf3b1eedf80eab1736200000000000000000000000000000000006dfb36e1c281cf1c5a8be9a631cab94aa956bacf8e9e787c0e2bab4440f03f0efc56d5a058fde2e18696c569676d3b00000000000000000000000000000000118791bba7507725b7106bc889b68c3daa56dc3100d8378cf156268f249dbafd01025cb722d58246c95ac856dd5d0411000000000000000000000000000000000f942ab8fd1e71f6d4498403116ef41954e7967222f894b93ae31f061cafaa1ed3464520dc5123aad4b0a352a85efbf8000000000000000000000000000000001252aaecb588ffcdee3e4fd92ff5164feaf9aa39acbc71c704d8180611d30fe13e59bba805101dc1cecf77b254bc65510000000000000000000000000000000009dc3de2e8aa94dbcc25c8775e9bd0ae0fa8581df790e562e67f24c08efaab59a0a8062478a09c262040c5f0558971c3000000000000000000000000000000000c13d99118e4946773d0ae54a37895411e39ba0de604c5f69d0b3ddcd50c4261c38c510bc1e018dbdf449e303e398d820000000000000000000000000000000018427393a7ed2dee713e83e58a6537c5c6baeb69ceac3b574e02af78215d99b8cd01f0c944d075300d35176099b0aa8100000000000000000000000000000000140ab2527b79327e07344a673e688debec28aa29219a5b1646a3c2b599a9d374cf5e139ab00aa237bb8e29d021d766ea0000000000000000000000000000000017164f154d26566ecc983d38d77d694208864c024c3ffc69f19f84550e86eddd8dbb055a8cf543717ce3d65e1c64c53a,,,invalid point: subgroup check failed diff --git a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/pairing.csv b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/pairing.csv index 1b5feaae6a23..ea04bb5b739e 100644 --- a/evm/src/test/resources/org/hyperledger/besu/evm/precompile/pairing.csv +++ b/evm/src/test/resources/org/hyperledger/besu/evm/precompile/pairing.csv @@ -95,10 +95,10 @@ input,result,gas,notes 0000000000000000000000000000000009ec00ea2da59d937d3154d86dbed2957667253401bce9de80e0ffe6df32f36b06404b9e3af08e912a0b4ef091f93efb000000000000000000000000000000000dd8d1bd66f4accbc9d0c7dabef7af72f51c67a0d61384647533ad92bba44a312f0be0fa52163176f1aff4e64c00aefb0000000000000000000000000000000001cdfae9234096578b9413f926ef8c6831f2c0f700e25d7553a746aef44238e493f8032e09f67f2fed9676c9611f60e70000000000000000000000000000000019c8bae08d3926997146f7827f00cde863684dd4050ea5da64f6798e7a930d3c1f34046bea0f44232594f5469db566280000000000000000000000000000000013574b997ee8988aa81db0e2ddb98be2e7005603076fac5cb246f65c869aa7bb3f148c8dde970e34e5e5efce023e633c000000000000000000000000000000000998bc9d41c5d527360fc4e68ba067d3778cf5cf00e5959b5ec52c1595aabe6e2e92d40cb34faa84513d150568c8cfc00000000000000000000000000000000009ec00ea2da59d937d3154d86dbed2957667253401bce9de80e0ffe6df32f36b06404b9e3af08e912a0b4ef091f93efb000000000000000000000000000000000c28402cd28b39ce814adfdb8453fd646f5ae3e41d718e5af1fd250e3b0cabf2efa01f045f3dce88c84f0b19b3fefbb00000000000000000000000000000000001cdfae9234096578b9413f926ef8c6831f2c0f700e25d7553a746aef44238e493f8032e09f67f2fed9676c9611f60e70000000000000000000000000000000019c8bae08d3926997146f7827f00cde863684dd4050ea5da64f6798e7a930d3c1f34046bea0f44232594f5469db566280000000000000000000000000000000013574b997ee8988aa81db0e2ddb98be2e7005603076fac5cb246f65c869aa7bb3f148c8dde970e34e5e5efce023e633c000000000000000000000000000000000998bc9d41c5d527360fc4e68ba067d3778cf5cf00e5959b5ec52c1595aabe6e2e92d40cb34faa84513d150568c8cfc00000000000000000000000000000000009ec00ea2da59d937d3154d86dbed2957667253401bce9de80e0ffe6df32f36b06404b9e3af08e912a0b4ef091f93efb000000000000000000000000000000000dd8d1bd66f4accbc9d0c7dabef7af72f51c67a0d61384647533ad92bba44a312f0be0fa52163176f1aff4e64c00aefb0000000000000000000000000000000001cdfae9234096578b9413f926ef8c6831f2c0f700e25d7553a746aef44238e493f8032e09f67f2fed9676c9611f60e70000000000000000000000000000000019c8bae08d3926997146f7827f00cde863684dd4050ea5da64f6798e7a930d3c1f34046bea0f44232594f5469db566280000000000000000000000000000000006a9c650ba974e0fa2fdf6d3659220f47d76f581ec156662b4e9dc4470164e68df977370d2bcf1cad4191031fdc1476f000000000000000000000000000000001068554cf7ba1173150be2cfb7ab4503ecea55b5f29f7d24086ba68b610637b5f0192bf1fe04557b68c1eafa9736daeb0000000000000000000000000000000009ec00ea2da59d937d3154d86dbed2957667253401bce9de80e0ffe6df32f36b06404b9e3af08e912a0b4ef091f93efb000000000000000000000000000000000c28402cd28b39ce814adfdb8453fd646f5ae3e41d718e5af1fd250e3b0cabf2efa01f045f3dce88c84f0b19b3fefbb00000000000000000000000000000000001cdfae9234096578b9413f926ef8c6831f2c0f700e25d7553a746aef44238e493f8032e09f67f2fed9676c9611f60e70000000000000000000000000000000019c8bae08d3926997146f7827f00cde863684dd4050ea5da64f6798e7a930d3c1f34046bea0f44232594f5469db566280000000000000000000000000000000006a9c650ba974e0fa2fdf6d3659220f47d76f581ec156662b4e9dc4470164e68df977370d2bcf1cad4191031fdc1476f000000000000000000000000000000001068554cf7ba1173150be2cfb7ab4503ecea55b5f29f7d24086ba68b610637b5f0192bf1fe04557b68c1eafa9736daeb0000000000000000000000000000000009ec00ea2da59d937d3154d86dbed2957667253401bce9de80e0ffe6df32f36b06404b9e3af08e912a0b4ef091f93efb000000000000000000000000000000000dd8d1bd66f4accbc9d0c7dabef7af72f51c67a0d61384647533ad92bba44a312f0be0fa52163176f1aff4e64c00aefb0000000000000000000000000000000001cdfae9234096578b9413f926ef8c6831f2c0f700e25d7553a746aef44238e493f8032e09f67f2fed9676c9611f60e70000000000000000000000000000000019c8bae08d3926997146f7827f00cde863684dd4050ea5da64f6798e7a930d3c1f34046bea0f44232594f5469db566280000000000000000000000000000000013574b997ee8988aa81db0e2ddb98be2e7005603076fac5cb246f65c869aa7bb3f148c8dde970e34e5e5efce023e633c000000000000000000000000000000000998bc9d41c5d527360fc4e68ba067d3778cf5cf00e5959b5ec52c1595aabe6e2e92d40cb34faa84513d150568c8cfc00000000000000000000000000000000009ec00ea2da59d937d3154d86dbed2957667253401bce9de80e0ffe6df32f36b06404b9e3af08e912a0b4ef091f93efb000000000000000000000000000000000c28402cd28b39ce814adfdb8453fd646f5ae3e41d718e5af1fd250e3b0cabf2efa01f045f3dce88c84f0b19b3fefbb00000000000000000000000000000000001cdfae9234096578b9413f926ef8c6831f2c0f700e25d7553a746aef44238e493f8032e09f67f2fed9676c9611f60e70000000000000000000000000000000019c8bae08d3926997146f7827f00cde863684dd4050ea5da64f6798e7a930d3c1f34046bea0f44232594f5469db566280000000000000000000000000000000013574b997ee8988aa81db0e2ddb98be2e7005603076fac5cb246f65c869aa7bb3f148c8dde970e34e5e5efce023e633c000000000000000000000000000000000998bc9d41c5d527360fc4e68ba067d3778cf5cf00e5959b5ec52c1595aabe6e2e92d40cb34faa84513d150568c8cfc00000000000000000000000000000000009ec00ea2da59d937d3154d86dbed2957667253401bce9de80e0ffe6df32f36b06404b9e3af08e912a0b4ef091f93efb000000000000000000000000000000000dd8d1bd66f4accbc9d0c7dabef7af72f51c67a0d61384647533ad92bba44a312f0be0fa52163176f1aff4e64c00aefb0000000000000000000000000000000001cdfae9234096578b9413f926ef8c6831f2c0f700e25d7553a746aef44238e493f8032e09f67f2fed9676c9611f60e70000000000000000000000000000000019c8bae08d3926997146f7827f00cde863684dd4050ea5da64f6798e7a930d3c1f34046bea0f44232594f5469db566280000000000000000000000000000000006a9c650ba974e0fa2fdf6d3659220f47d76f581ec156662b4e9dc4470164e68df977370d2bcf1cad4191031fdc1476f000000000000000000000000000000001068554cf7ba1173150be2cfb7ab4503ecea55b5f29f7d24086ba68b610637b5f0192bf1fe04557b68c1eafa9736daeb0000000000000000000000000000000009ec00ea2da59d937d3154d86dbed2957667253401bce9de80e0ffe6df32f36b06404b9e3af08e912a0b4ef091f93efb000000000000000000000000000000000c28402cd28b39ce814adfdb8453fd646f5ae3e41d718e5af1fd250e3b0cabf2efa01f045f3dce88c84f0b19b3fefbb00000000000000000000000000000000001cdfae9234096578b9413f926ef8c6831f2c0f700e25d7553a746aef44238e493f8032e09f67f2fed9676c9611f60e70000000000000000000000000000000019c8bae08d3926997146f7827f00cde863684dd4050ea5da64f6798e7a930d3c1f34046bea0f44232594f5469db566280000000000000000000000000000000006a9c650ba974e0fa2fdf6d3659220f47d76f581ec156662b4e9dc4470164e68df977370d2bcf1cad4191031fdc1476f000000000000000000000000000000001068554cf7ba1173150be2cfb7ab4503ecea55b5f29f7d24086ba68b610637b5f0192bf1fe04557b68c1eafa9736daeb,0000000000000000000000000000000000000000000000000000000000000001,409000, 0000000000000000000000000000000014153e01c9e495c5c01c82b3cad9eaf20cf78369ccbabf57fb160ded309cbd1caea3d3df38a7ea5490c67f168e9acec0000000000000000000000000000000001648030be79658c134e016a211d311841988065957b35e9bc1580fb6e05e291e747b7a960a50e26a2a3c0cd1634c3585000000000000000000000000000000000c78d84157dc0b102c3843e4c8e88f244cc1b2a27043e07b2fab694a58f93d47e4cf9ca1158a8e30e3d43f94a20d33b50000000000000000000000000000000004842fe0df312f735a9d8af0c2ff7c561ed9cf4add5e3e9402bcff1190f3f36ca91de8edc9472b3ebd27ee2d9afdf8770000000000000000000000000000000008c7a67b89960da4309888bc6ce31e7efe74867165a8aceda7c7290f8a92687100ccbcd39d4d5a67f21f4b63ecc638320000000000000000000000000000000001cd7978ce28629ed1a9c5433c555b1ebb584f80909599282467e7b2471f591bea1d73e7b0a247aed7de4f1fecc012040000000000000000000000000000000014153e01c9e495c5c01c82b3cad9eaf20cf78369ccbabf57fb160ded309cbd1caea3d3df38a7ea5490c67f168e9acec00000000000000000000000000000000003b90ede51e98dd9163b911431789b534aef452b9bd1b423a5d8c2ea1652cd05aa308568a7031d958fc2f32e9cb37526000000000000000000000000000000000c78d84157dc0b102c3843e4c8e88f244cc1b2a27043e07b2fab694a58f93d47e4cf9ca1158a8e30e3d43f94a20d33b50000000000000000000000000000000004842fe0df312f735a9d8af0c2ff7c561ed9cf4add5e3e9402bcff1190f3f36ca91de8edc9472b3ebd27ee2d9afdf8770000000000000000000000000000000008c7a67b89960da4309888bc6ce31e7efe74867165a8aceda7c7290f8a92687100ccbcd39d4d5a67f21f4b63ecc638320000000000000000000000000000000001cd7978ce28629ed1a9c5433c555b1ebb584f80909599282467e7b2471f591bea1d73e7b0a247aed7de4f1fecc012040000000000000000000000000000000014153e01c9e495c5c01c82b3cad9eaf20cf78369ccbabf57fb160ded309cbd1caea3d3df38a7ea5490c67f168e9acec0000000000000000000000000000000001648030be79658c134e016a211d311841988065957b35e9bc1580fb6e05e291e747b7a960a50e26a2a3c0cd1634c3585000000000000000000000000000000000c78d84157dc0b102c3843e4c8e88f244cc1b2a27043e07b2fab694a58f93d47e4cf9ca1158a8e30e3d43f94a20d33b50000000000000000000000000000000004842fe0df312f735a9d8af0c2ff7c561ed9cf4add5e3e9402bcff1190f3f36ca91de8edc9472b3ebd27ee2d9afdf8770000000000000000000000000000000011396b6eafe9d8f61a831ef9d6688e586602c5138ddc65d1bf69a9916c1e8db31ddf432b1406a597c7dfb49c1339727900000000000000000000000000000000183398716b5783fb7971e27306f651b8a91efc0462ef799742c8eaeeaf919d08348e8c1700b1b850e220b0e0133f98a70000000000000000000000000000000014153e01c9e495c5c01c82b3cad9eaf20cf78369ccbabf57fb160ded309cbd1caea3d3df38a7ea5490c67f168e9acec00000000000000000000000000000000003b90ede51e98dd9163b911431789b534aef452b9bd1b423a5d8c2ea1652cd05aa308568a7031d958fc2f32e9cb37526000000000000000000000000000000000c78d84157dc0b102c3843e4c8e88f244cc1b2a27043e07b2fab694a58f93d47e4cf9ca1158a8e30e3d43f94a20d33b50000000000000000000000000000000004842fe0df312f735a9d8af0c2ff7c561ed9cf4add5e3e9402bcff1190f3f36ca91de8edc9472b3ebd27ee2d9afdf8770000000000000000000000000000000011396b6eafe9d8f61a831ef9d6688e586602c5138ddc65d1bf69a9916c1e8db31ddf432b1406a597c7dfb49c1339727900000000000000000000000000000000183398716b5783fb7971e27306f651b8a91efc0462ef799742c8eaeeaf919d08348e8c1700b1b850e220b0e0133f98a70000000000000000000000000000000014153e01c9e495c5c01c82b3cad9eaf20cf78369ccbabf57fb160ded309cbd1caea3d3df38a7ea5490c67f168e9acec0000000000000000000000000000000001648030be79658c134e016a211d311841988065957b35e9bc1580fb6e05e291e747b7a960a50e26a2a3c0cd1634c3585000000000000000000000000000000000c78d84157dc0b102c3843e4c8e88f244cc1b2a27043e07b2fab694a58f93d47e4cf9ca1158a8e30e3d43f94a20d33b50000000000000000000000000000000004842fe0df312f735a9d8af0c2ff7c561ed9cf4add5e3e9402bcff1190f3f36ca91de8edc9472b3ebd27ee2d9afdf8770000000000000000000000000000000008c7a67b89960da4309888bc6ce31e7efe74867165a8aceda7c7290f8a92687100ccbcd39d4d5a67f21f4b63ecc638320000000000000000000000000000000001cd7978ce28629ed1a9c5433c555b1ebb584f80909599282467e7b2471f591bea1d73e7b0a247aed7de4f1fecc012040000000000000000000000000000000014153e01c9e495c5c01c82b3cad9eaf20cf78369ccbabf57fb160ded309cbd1caea3d3df38a7ea5490c67f168e9acec00000000000000000000000000000000003b90ede51e98dd9163b911431789b534aef452b9bd1b423a5d8c2ea1652cd05aa308568a7031d958fc2f32e9cb37526000000000000000000000000000000000c78d84157dc0b102c3843e4c8e88f244cc1b2a27043e07b2fab694a58f93d47e4cf9ca1158a8e30e3d43f94a20d33b50000000000000000000000000000000004842fe0df312f735a9d8af0c2ff7c561ed9cf4add5e3e9402bcff1190f3f36ca91de8edc9472b3ebd27ee2d9afdf8770000000000000000000000000000000008c7a67b89960da4309888bc6ce31e7efe74867165a8aceda7c7290f8a92687100ccbcd39d4d5a67f21f4b63ecc638320000000000000000000000000000000001cd7978ce28629ed1a9c5433c555b1ebb584f80909599282467e7b2471f591bea1d73e7b0a247aed7de4f1fecc012040000000000000000000000000000000014153e01c9e495c5c01c82b3cad9eaf20cf78369ccbabf57fb160ded309cbd1caea3d3df38a7ea5490c67f168e9acec0000000000000000000000000000000001648030be79658c134e016a211d311841988065957b35e9bc1580fb6e05e291e747b7a960a50e26a2a3c0cd1634c3585000000000000000000000000000000000c78d84157dc0b102c3843e4c8e88f244cc1b2a27043e07b2fab694a58f93d47e4cf9ca1158a8e30e3d43f94a20d33b50000000000000000000000000000000004842fe0df312f735a9d8af0c2ff7c561ed9cf4add5e3e9402bcff1190f3f36ca91de8edc9472b3ebd27ee2d9afdf8770000000000000000000000000000000011396b6eafe9d8f61a831ef9d6688e586602c5138ddc65d1bf69a9916c1e8db31ddf432b1406a597c7dfb49c1339727900000000000000000000000000000000183398716b5783fb7971e27306f651b8a91efc0462ef799742c8eaeeaf919d08348e8c1700b1b850e220b0e0133f98a70000000000000000000000000000000014153e01c9e495c5c01c82b3cad9eaf20cf78369ccbabf57fb160ded309cbd1caea3d3df38a7ea5490c67f168e9acec00000000000000000000000000000000003b90ede51e98dd9163b911431789b534aef452b9bd1b423a5d8c2ea1652cd05aa308568a7031d958fc2f32e9cb37526000000000000000000000000000000000c78d84157dc0b102c3843e4c8e88f244cc1b2a27043e07b2fab694a58f93d47e4cf9ca1158a8e30e3d43f94a20d33b50000000000000000000000000000000004842fe0df312f735a9d8af0c2ff7c561ed9cf4add5e3e9402bcff1190f3f36ca91de8edc9472b3ebd27ee2d9afdf8770000000000000000000000000000000011396b6eafe9d8f61a831ef9d6688e586602c5138ddc65d1bf69a9916c1e8db31ddf432b1406a597c7dfb49c1339727900000000000000000000000000000000183398716b5783fb7971e27306f651b8a91efc0462ef799742c8eaeeaf919d08348e8c1700b1b850e220b0e0133f98a7,0000000000000000000000000000000000000000000000000000000000000001,409000, 000000000000000000000000000000001555535228eb9a24f460df9894d59aa06fc848a8bf8d6c3b51653b1d85734b3c5a2bece161309bd478d356fa198d579500000000000000000000000000000000144401f7eb69f6321eae8dad39dbe2cf4ae58e455474701dd9f1b62c85c7536813e84eb4f9def511eb62e5194288728b000000000000000000000000000000000e619d79792ac685030311a31a21203e5172d2e5d20ecf69a1e64158e7fe903b3695fd15432d3ca35562b5a8bd9cbdc20000000000000000000000000000000012394a621a503d1d92df3306649a6c6979816cabeb8f8d27450ec883c4e75f6f7411f3bfd068dc8dee58cdb8ebbd91bd0000000000000000000000000000000001652a688dbfd63a1c89452335bdaf248c97c9c6e5a3ad5a126577a6b9ab57075b22987ea8697b459611a5ab164f328400000000000000000000000000000000058a37347c5637808632ae6e8f264e8bde14ebb0ae69828f962f51b728321fea57c5a97ab694f7db175efe7a17d36cb6000000000000000000000000000000001555535228eb9a24f460df9894d59aa06fc848a8bf8d6c3b51653b1d85734b3c5a2bece161309bd478d356fa198d57950000000000000000000000000000000005bd0ff24e15f0682c6d1a09096fca081991bd3f9f10a2a18d3f1c7470e9a2bc0ac3b149b7750aedce9c1ae6bd773820000000000000000000000000000000000e619d79792ac685030311a31a21203e5172d2e5d20ecf69a1e64158e7fe903b3695fd15432d3ca35562b5a8bd9cbdc20000000000000000000000000000000012394a621a503d1d92df3306649a6c6979816cabeb8f8d27450ec883c4e75f6f7411f3bfd068dc8dee58cdb8ebbd91bd0000000000000000000000000000000001652a688dbfd63a1c89452335bdaf248c97c9c6e5a3ad5a126577a6b9ab57075b22987ea8697b459611a5ab164f328400000000000000000000000000000000058a37347c5637808632ae6e8f264e8bde14ebb0ae69828f962f51b728321fea57c5a97ab694f7db175efe7a17d36cb6000000000000000000000000000000001555535228eb9a24f460df9894d59aa06fc848a8bf8d6c3b51653b1d85734b3c5a2bece161309bd478d356fa198d579500000000000000000000000000000000144401f7eb69f6321eae8dad39dbe2cf4ae58e455474701dd9f1b62c85c7536813e84eb4f9def511eb62e5194288728b000000000000000000000000000000000e619d79792ac685030311a31a21203e5172d2e5d20ecf69a1e64158e7fe903b3695fd15432d3ca35562b5a8bd9cbdc20000000000000000000000000000000012394a621a503d1d92df3306649a6c6979816cabeb8f8d27450ec883c4e75f6f7411f3bfd068dc8dee58cdb8ebbd91bd00000000000000000000000000000000189be781abc010602e9262930d8dfdb2d7df81be0de1656554cb5afa3d059f1cc389678008ea84ba23ed5a54e9b07827000000000000000000000000000000001476dab5bd29af19c4e8f947b4255e4b86625fd4451b902fd10180e9ce7ed639c6e65683fabf0824a2a00185e82c3df5000000000000000000000000000000001555535228eb9a24f460df9894d59aa06fc848a8bf8d6c3b51653b1d85734b3c5a2bece161309bd478d356fa198d57950000000000000000000000000000000005bd0ff24e15f0682c6d1a09096fca081991bd3f9f10a2a18d3f1c7470e9a2bc0ac3b149b7750aedce9c1ae6bd773820000000000000000000000000000000000e619d79792ac685030311a31a21203e5172d2e5d20ecf69a1e64158e7fe903b3695fd15432d3ca35562b5a8bd9cbdc20000000000000000000000000000000012394a621a503d1d92df3306649a6c6979816cabeb8f8d27450ec883c4e75f6f7411f3bfd068dc8dee58cdb8ebbd91bd00000000000000000000000000000000189be781abc010602e9262930d8dfdb2d7df81be0de1656554cb5afa3d059f1cc389678008ea84ba23ed5a54e9b07827000000000000000000000000000000001476dab5bd29af19c4e8f947b4255e4b86625fd4451b902fd10180e9ce7ed639c6e65683fabf0824a2a00185e82c3df5000000000000000000000000000000001555535228eb9a24f460df9894d59aa06fc848a8bf8d6c3b51653b1d85734b3c5a2bece161309bd478d356fa198d579500000000000000000000000000000000144401f7eb69f6321eae8dad39dbe2cf4ae58e455474701dd9f1b62c85c7536813e84eb4f9def511eb62e5194288728b000000000000000000000000000000000e619d79792ac685030311a31a21203e5172d2e5d20ecf69a1e64158e7fe903b3695fd15432d3ca35562b5a8bd9cbdc20000000000000000000000000000000012394a621a503d1d92df3306649a6c6979816cabeb8f8d27450ec883c4e75f6f7411f3bfd068dc8dee58cdb8ebbd91bd0000000000000000000000000000000001652a688dbfd63a1c89452335bdaf248c97c9c6e5a3ad5a126577a6b9ab57075b22987ea8697b459611a5ab164f328400000000000000000000000000000000058a37347c5637808632ae6e8f264e8bde14ebb0ae69828f962f51b728321fea57c5a97ab694f7db175efe7a17d36cb6000000000000000000000000000000001555535228eb9a24f460df9894d59aa06fc848a8bf8d6c3b51653b1d85734b3c5a2bece161309bd478d356fa198d57950000000000000000000000000000000005bd0ff24e15f0682c6d1a09096fca081991bd3f9f10a2a18d3f1c7470e9a2bc0ac3b149b7750aedce9c1ae6bd773820000000000000000000000000000000000e619d79792ac685030311a31a21203e5172d2e5d20ecf69a1e64158e7fe903b3695fd15432d3ca35562b5a8bd9cbdc20000000000000000000000000000000012394a621a503d1d92df3306649a6c6979816cabeb8f8d27450ec883c4e75f6f7411f3bfd068dc8dee58cdb8ebbd91bd0000000000000000000000000000000001652a688dbfd63a1c89452335bdaf248c97c9c6e5a3ad5a126577a6b9ab57075b22987ea8697b459611a5ab164f328400000000000000000000000000000000058a37347c5637808632ae6e8f264e8bde14ebb0ae69828f962f51b728321fea57c5a97ab694f7db175efe7a17d36cb6000000000000000000000000000000001555535228eb9a24f460df9894d59aa06fc848a8bf8d6c3b51653b1d85734b3c5a2bece161309bd478d356fa198d579500000000000000000000000000000000144401f7eb69f6321eae8dad39dbe2cf4ae58e455474701dd9f1b62c85c7536813e84eb4f9def511eb62e5194288728b000000000000000000000000000000000e619d79792ac685030311a31a21203e5172d2e5d20ecf69a1e64158e7fe903b3695fd15432d3ca35562b5a8bd9cbdc20000000000000000000000000000000012394a621a503d1d92df3306649a6c6979816cabeb8f8d27450ec883c4e75f6f7411f3bfd068dc8dee58cdb8ebbd91bd00000000000000000000000000000000189be781abc010602e9262930d8dfdb2d7df81be0de1656554cb5afa3d059f1cc389678008ea84ba23ed5a54e9b07827000000000000000000000000000000001476dab5bd29af19c4e8f947b4255e4b86625fd4451b902fd10180e9ce7ed639c6e65683fabf0824a2a00185e82c3df5000000000000000000000000000000001555535228eb9a24f460df9894d59aa06fc848a8bf8d6c3b51653b1d85734b3c5a2bece161309bd478d356fa198d57950000000000000000000000000000000005bd0ff24e15f0682c6d1a09096fca081991bd3f9f10a2a18d3f1c7470e9a2bc0ac3b149b7750aedce9c1ae6bd773820000000000000000000000000000000000e619d79792ac685030311a31a21203e5172d2e5d20ecf69a1e64158e7fe903b3695fd15432d3ca35562b5a8bd9cbdc20000000000000000000000000000000012394a621a503d1d92df3306649a6c6979816cabeb8f8d27450ec883c4e75f6f7411f3bfd068dc8dee58cdb8ebbd91bd00000000000000000000000000000000189be781abc010602e9262930d8dfdb2d7df81be0de1656554cb5afa3d059f1cc389678008ea84ba23ed5a54e9b07827000000000000000000000000000000001476dab5bd29af19c4e8f947b4255e4b86625fd4451b902fd10180e9ce7ed639c6e65683fabf0824a2a00185e82c3df5,0000000000000000000000000000000000000000000000000000000000000001,409000, -00000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1d9f0000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,115000,invalid input parameters, invalid input length for pairing +00000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1d9f0000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,115000,invalid input parameters, invalid number of pairs 000000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1d9f0000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,108000,invalid input parameters, invalid input length for pairing -,,115000,invalid input parameters, Invalid number of pairs -0000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f570000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1d9f0000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,108000,invalid input parameters, G1 point is not on curve -0000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1da00000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,108000,invalid input parameters, G2 point is not on curve -000000000000000000000000000000001830f52d9bff64a623c6f5259e2cd2c2a08ea17a8797aaf83174ea1e8c3bd3955c2af1d39bfa474815bfe60714b7cd80000000000000000000000000000000000874389c02d4cf1c61bc54c4c24def11dfbe7880bc998a95e70063009451ee8226fec4b278aade3a7cea55659459f1d500000000000000000000000000000000197737f831d4dc7e708475f4ca7ca15284db2f3751fcaac0c17f517f1ddab35e1a37907d7b99b39d6c8d9001cd50e79e000000000000000000000000000000000af1a3f6396f0c983e7c2d42d489a3ae5a3ff0a553d93154f73ac770cd0af7467aa0cef79f10bbd34621b3ec9583a834000000000000000000000000000000001918cb6e448ed69fb906145de3f11455ee0359d030e90d673ce050a360d796de33ccd6a941c49a1414aca1c26f9e699e0000000000000000000000000000000019a915154a13249d784093facc44520e7f3a18410ab2a3093e0b12657788e9419eec25729944f7945e732104939e7a9e000000000000000000000000000000001830f52d9bff64a623c6f5259e2cd2c2a08ea17a8797aaf83174ea1e8c3bd3955c2af1d39bfa474815bfe60714b7cd9000000000000000000000000000000000118cd94e36ab177de95f52f180fdbdc584b8d30436eb882980306fa0625f07a1f7ad3b4c38a921c53d14aa9a6ba5b8d600000000000000000000000000000000197737f831d4dc7e708475f4ca7ca15284db2f3751fcaac0c17f517f1ddab35e1a37907d7b99b39d6c8d9001cd50e79e000000000000000000000000000000000af1a3f6396f0c983e7c2d42d489a3ae5a3ff0a553d93154f73ac770cd0af7467aa0cef79f10bbd34621b3ec9583a834000000000000000000000000000000001918cb6e448ed69fb906145de3f11455ee0359d030e90d673ce050a360d796de33ccd6a941c49a1414aca1c26f9e699e0000000000000000000000000000000019a915154a13249d784093facc44520e7f3a18410ab2a3093e0b12657788e9419eec25729944f7945e732104939e7a9e,,151000,invalid input parameters, G1 point is not on curve -000000000000000000000000000000001830f52d9bff64a623c6f5259e2cd2c2a08ea17a8797aaf83174ea1e8c3bd3955c2af1d39bfa474815bfe60714b7cd80000000000000000000000000000000000874389c02d4cf1c61bc54c4c24def11dfbe7880bc998a95e70063009451ee8226fec4b278aade3a7cea55659459f1d500000000000000000000000000000000197737f831d4dc7e708475f4ca7ca15284db2f3751fcaac0c17f517f1ddab35e1a37907d7b99b39d6c8d9001cd50e79e000000000000000000000000000000000af1a3f6396f0c983e7c2d42d489a3ae5a3ff0a553d93154f73ac770cd0af7467aa0cef79f10bbd34621b3ec9583a834000000000000000000000000000000001918cb6e448ed69fb906145de3f11455ee0359d030e90d673ce050a360d796de33ccd6a941c49a1414aca1c26f9e699e0000000000000000000000000000000019a915154a13249d784093facc44520e7f3a18410ab2a3093e0b12657788e9419eec25729944f7945e732104939e7a9e000000000000000000000000000000001830f52d9bff64a623c6f5259e2cd2c2a08ea17a8797aaf83174ea1e8c3bd3955c2af1d39bfa474815bfe60714b7cd8000000000000000000000000000000000118cd94e36ab177de95f52f180fdbdc584b8d30436eb882980306fa0625f07a1f7ad3b4c38a921c53d14aa9a6ba5b8d600000000000000000000000000000000197737f831d4dc7e708475f4ca7ca15284db2f3751fcaac0c17f517f1ddab35e1a37907d7b99b39d6c8d9001cd50e79f000000000000000000000000000000000af1a3f6396f0c983e7c2d42d489a3ae5a3ff0a553d93154f73ac770cd0af7467aa0cef79f10bbd34621b3ec9583a834000000000000000000000000000000001918cb6e448ed69fb906145de3f11455ee0359d030e90d673ce050a360d796de33ccd6a941c49a1414aca1c26f9e699e0000000000000000000000000000000019a915154a13249d784093facc44520e7f3a18410ab2a3093e0b12657788e9419eec25729944f7945e732104939e7a9e,,151000,invalid input parameters, G2 point is not on curve +,,115000,invalid input parameters, invalid number of pairs +0000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f570000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1d9f0000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,108000,invalid point: point is not on curve +0000000000000000000000000000000012196c5a43d69224d8713389285f26b98f86ee910ab3dd668e413738282003cc5b7357af9a7af54bb713d62255e80f560000000000000000000000000000000006ba8102bfbeea4416b710c73e8cce3032c31c6269c44906f8ac4f7874ce99fb17559992486528963884ce429a992fee0000000000000000000000000000000017c9fcf0504e62d3553b2f089b64574150aa5117bd3d2e89a8c1ed59bb7f70fb83215975ef31976e757abf60a75a1da00000000000000000000000000000000008f5a53d704298fe0cfc955e020442874fe87d5c729c7126abbdcbed355eef6c8f07277bee6d49d56c4ebaf334848624000000000000000000000000000000001302dcc50c6ce4c28086f8e1b43f9f65543cf598be440123816765ab6bc93f62bceda80045fbcad8598d4f32d03ee8fa000000000000000000000000000000000bbb4eb37628d60b035a3e0c45c0ea8c4abef5a6ddc5625e0560097ef9caab208221062e81cd77ef72162923a1906a40,,108000,invalid point: point is not on curve +000000000000000000000000000000001830f52d9bff64a623c6f5259e2cd2c2a08ea17a8797aaf83174ea1e8c3bd3955c2af1d39bfa474815bfe60714b7cd80000000000000000000000000000000000874389c02d4cf1c61bc54c4c24def11dfbe7880bc998a95e70063009451ee8226fec4b278aade3a7cea55659459f1d500000000000000000000000000000000197737f831d4dc7e708475f4ca7ca15284db2f3751fcaac0c17f517f1ddab35e1a37907d7b99b39d6c8d9001cd50e79e000000000000000000000000000000000af1a3f6396f0c983e7c2d42d489a3ae5a3ff0a553d93154f73ac770cd0af7467aa0cef79f10bbd34621b3ec9583a834000000000000000000000000000000001918cb6e448ed69fb906145de3f11455ee0359d030e90d673ce050a360d796de33ccd6a941c49a1414aca1c26f9e699e0000000000000000000000000000000019a915154a13249d784093facc44520e7f3a18410ab2a3093e0b12657788e9419eec25729944f7945e732104939e7a9e000000000000000000000000000000001830f52d9bff64a623c6f5259e2cd2c2a08ea17a8797aaf83174ea1e8c3bd3955c2af1d39bfa474815bfe60714b7cd9000000000000000000000000000000000118cd94e36ab177de95f52f180fdbdc584b8d30436eb882980306fa0625f07a1f7ad3b4c38a921c53d14aa9a6ba5b8d600000000000000000000000000000000197737f831d4dc7e708475f4ca7ca15284db2f3751fcaac0c17f517f1ddab35e1a37907d7b99b39d6c8d9001cd50e79e000000000000000000000000000000000af1a3f6396f0c983e7c2d42d489a3ae5a3ff0a553d93154f73ac770cd0af7467aa0cef79f10bbd34621b3ec9583a834000000000000000000000000000000001918cb6e448ed69fb906145de3f11455ee0359d030e90d673ce050a360d796de33ccd6a941c49a1414aca1c26f9e699e0000000000000000000000000000000019a915154a13249d784093facc44520e7f3a18410ab2a3093e0b12657788e9419eec25729944f7945e732104939e7a9e,,151000,invalid point: point is not on curve +000000000000000000000000000000001830f52d9bff64a623c6f5259e2cd2c2a08ea17a8797aaf83174ea1e8c3bd3955c2af1d39bfa474815bfe60714b7cd80000000000000000000000000000000000874389c02d4cf1c61bc54c4c24def11dfbe7880bc998a95e70063009451ee8226fec4b278aade3a7cea55659459f1d500000000000000000000000000000000197737f831d4dc7e708475f4ca7ca15284db2f3751fcaac0c17f517f1ddab35e1a37907d7b99b39d6c8d9001cd50e79e000000000000000000000000000000000af1a3f6396f0c983e7c2d42d489a3ae5a3ff0a553d93154f73ac770cd0af7467aa0cef79f10bbd34621b3ec9583a834000000000000000000000000000000001918cb6e448ed69fb906145de3f11455ee0359d030e90d673ce050a360d796de33ccd6a941c49a1414aca1c26f9e699e0000000000000000000000000000000019a915154a13249d784093facc44520e7f3a18410ab2a3093e0b12657788e9419eec25729944f7945e732104939e7a9e000000000000000000000000000000001830f52d9bff64a623c6f5259e2cd2c2a08ea17a8797aaf83174ea1e8c3bd3955c2af1d39bfa474815bfe60714b7cd8000000000000000000000000000000000118cd94e36ab177de95f52f180fdbdc584b8d30436eb882980306fa0625f07a1f7ad3b4c38a921c53d14aa9a6ba5b8d600000000000000000000000000000000197737f831d4dc7e708475f4ca7ca15284db2f3751fcaac0c17f517f1ddab35e1a37907d7b99b39d6c8d9001cd50e79f000000000000000000000000000000000af1a3f6396f0c983e7c2d42d489a3ae5a3ff0a553d93154f73ac770cd0af7467aa0cef79f10bbd34621b3ec9583a834000000000000000000000000000000001918cb6e448ed69fb906145de3f11455ee0359d030e90d673ce050a360d796de33ccd6a941c49a1414aca1c26f9e699e0000000000000000000000000000000019a915154a13249d784093facc44520e7f3a18410ab2a3093e0b12657788e9419eec25729944f7945e732104939e7a9e,,151000,invalid point: point is not on curve diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 86f65970e612..bd437c3a4e76 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -114,9 +114,9 @@ - - - + + + @@ -134,9 +134,9 @@ - - - + + + @@ -189,12 +189,12 @@ - - - + + + - - + + @@ -221,12 +221,12 @@ - - - + + + - - + + @@ -253,12 +253,12 @@ - - - + + + - - + + @@ -1361,14 +1361,6 @@ - - - - - - - - @@ -2507,14 +2499,6 @@ - - - - - - - - @@ -2531,22 +2515,6 @@ - - - - - - - - - - - - - - - - @@ -2765,14 +2733,6 @@ - - - - - - - - @@ -3139,11 +3099,6 @@ - - - - - @@ -4603,41 +4558,41 @@ - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + @@ -4677,12 +4632,12 @@ - - - + + + - - + + @@ -4693,44 +4648,52 @@ - - - + + + + + + + + + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + - - - + + + - - + + @@ -5060,17 +5023,6 @@ - - - - - - - - - - - @@ -5177,14 +5129,6 @@ - - - - - - - - @@ -5193,14 +5137,6 @@ - - - - - - - - @@ -5304,6 +5240,11 @@ + + + + + @@ -5312,11 +5253,6 @@ - - - - - @@ -5336,6 +5272,11 @@ + + + + + @@ -5352,11 +5293,6 @@ - - - - - diff --git a/gradle/versions.gradle b/gradle/versions.gradle index db29cfd589b6..0c2289233d64 100644 --- a/gradle/versions.gradle +++ b/gradle/versions.gradle @@ -156,13 +156,14 @@ dependencyManagement { dependency 'org.openjdk.jol:jol-core:0.17' dependency 'tech.pegasys:jc-kzg-4844:1.0.0' - dependencySet(group: 'org.hyperledger.besu', version: '0.8.5') { + dependencySet(group: 'org.hyperledger.besu', version: '0.9.2') { entry 'arithmetic' entry 'ipa-multipoint' entry 'bls12-381' entry 'secp256k1' entry 'secp256r1' entry 'blake2bf' + entry 'gnark' } dependencySet(group: 'org.immutables', version: '2.10.0') { diff --git a/services/pipeline/src/main/java/org/hyperledger/besu/services/pipeline/AsyncOperationProcessor.java b/services/pipeline/src/main/java/org/hyperledger/besu/services/pipeline/AsyncOperationProcessor.java index c8c7e5905db6..e17296c026d0 100644 --- a/services/pipeline/src/main/java/org/hyperledger/besu/services/pipeline/AsyncOperationProcessor.java +++ b/services/pipeline/src/main/java/org/hyperledger/besu/services/pipeline/AsyncOperationProcessor.java @@ -83,7 +83,11 @@ private void outputNextCompletedTask(final WritePipe outputPipe) { waitForAnyFutureToComplete(); outputCompletedTasks(outputPipe); } catch (final InterruptedException e) { - LOG.trace("Interrupted while waiting for processing to complete", e.getMessage()); + LOG.atTrace() + .setMessage("Interrupted while waiting for processing to complete: Message=({})") + .addArgument(e.getMessage()) + .setCause(e) + .log(); } catch (final ExecutionException e) { throw new AsyncOperationException("Async operation failed. " + e.getMessage(), e); } catch (final TimeoutException e) { diff --git a/testutil/src/main/java/org/hyperledger/besu/testutil/JsonTestParameters.java b/testutil/src/main/java/org/hyperledger/besu/testutil/JsonTestParameters.java index 062e14cfc7f9..f95ac9348ea2 100644 --- a/testutil/src/main/java/org/hyperledger/besu/testutil/JsonTestParameters.java +++ b/testutil/src/main/java/org/hyperledger/besu/testutil/JsonTestParameters.java @@ -96,6 +96,7 @@ public void add( * @param fullPath the full path of the test * @param fork the fork to be tested * @param code the code to be tested + * @param containerKind the containerKind, if specified * @param value the value * @param runTest the run test */ @@ -104,10 +105,13 @@ public void add( final String fullPath, final String fork, final Bytes code, + final String containerKind, final S value, final boolean runTest) { testParameters.add( - new Object[] {name, fork, code, value, runTest && includes(name) && includes(fullPath)}); + new Object[] { + name, fork, code, containerKind, value, runTest && includes(name) && includes(fullPath) + }); } private boolean includes(final String name) { @@ -304,7 +308,7 @@ private Collection getFilteredFiles(final String[] paths) { final List files = new ArrayList<>(); for (final String path : paths) { final URL url = classLoader.getResource(path); - checkState(url != null, "Cannot find test directory " + path); + checkState(url != null, "Cannot find test directory %s", path); final Path dir; try { dir = Paths.get(url.toURI());